Ориентация .NET Framework 4.5 с помощью Visual Studio 2010
Сегодня я установил .NET Framework 4.5 на своем компьютере, ожидая, что смогу использовать его из Visual Studio 2010, поскольку это просто небольшое обновление, которое не должно создавать проблем для Visual Studio 2010. К сожалению, я даже не вручную удаляю некоторые версии 4.0 и добавляю соответствующие сборки 4.5, в результате чего исходные сборки 4.0 все еще упоминаются в проекте.
Можно ли настроить таргетинг версии 4.5 на Visual Studio 2010, и если да, то как? Я бы очень хотел использовать ленты...
Ответы
Ответ 1
Каждая версия Visual Studio до Visual Studio 2010 привязана к определенной платформе .NET. (VS2008 -.NET 3.5, VS2005 -.NET 2.0, VS2003 -.NET1.1). Visual Studio 2010 и более поздние версии позволяют ориентироваться на версии предыдущих версий, но не могут использоваться для будущих выпусков. Вы должны использовать Visual Studio 2012 для использования .NET 4.5.
Ответ 2
Есть довольно ограниченные сценарии, которые я могу придумать, где это было бы полезно, но позвольте предположить, что вы не можете получить средства на покупку VS2012 или что-то в этом роде. Если в этом случае и у вас есть Windows 7+ и VS 2010, вы можете использовать следующий взломанный пакет, который, похоже, работает (но пока я еще не полностью развернул приложение, используя этот метод).
-
Резервное копирование файла проекта.
-
Загрузите и установите Windows 8 SDK, который включает в себя .NET 4.5 SDK.
-
Откройте проект в VS2010.
-
Создайте текстовый файл в вашем проекте с именем Compile_4_5_CSharp.targets
со следующим содержимым. (Или просто скачайте его здесь - Обязательно удалите расширение ".txt" из имени файла):
<Project DefaultTargets="Build"
xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<!-- Change the target framework to 4.5 if using the ".NET 4.5" configuration -->
<PropertyGroup Condition=" '$(Platform)' == '.NET 4.5' ">
<DefineConstants Condition="'$(DefineConstants)'==''">
TARGETTING_FX_4_5
</DefineConstants>
<DefineConstants Condition="'$(DefineConstants)'!='' and '$(DefineConstants)'!='TARGETTING_FX_4_5'">
$(DefineConstants);TARGETTING_FX_4_5
</DefineConstants>
<PlatformTarget Condition="'$(PlatformTarget)'!=''"/>
<TargetFrameworkVersion>v4.5</TargetFrameworkVersion>
</PropertyGroup>
<!-- Import the standard C# targets -->
<Import Project="$(MSBuildBinPath)\Microsoft.CSharp.targets" />
<!-- Add .NET 4.5 as an available platform -->
<PropertyGroup>
<AvailablePlatforms>$(AvailablePlatforms),.NET 4.5</AvailablePlatforms>
</PropertyGroup>
</Project>
-
Разгрузите проект (щелкните правой кнопкой мыши → выгрузить).
-
Отредактируйте файл проекта (щелкните правой кнопкой мыши → Изменить *.csproj).
-
Внесите следующие изменения в файл проекта:
а. Замените по умолчанию Microsoft.CSharp.targets
целевым файлом, созданным на шаге 4
<!-- Old Import Entry -->
<!-- <Import Project="$(MSBuildBinPath)\Microsoft.CSharp.targets" /> -->
<!-- New Import Entry -->
<Import Project="Compile_4_5_CSharp.targets" />
б. Измените платформу по умолчанию на .NET 4.5
<!-- Old default platform entry -->
<!-- <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform> -->
<!-- New default platform entry -->
<Platform Condition=" '$(Platform)' == '' ">.NET 4.5</Platform>
с. Добавьте платформу AnyCPU
, чтобы обеспечить таргетинг других фреймворков, как указано в свойствах проекта. Это должно быть добавлено непосредственно перед первым тегом <ItemGroup>
в файле
<PropertyGroup Condition="'$(Platform)' == 'AnyCPU'">
<PlatformTarget>AnyCPU</PlatformTarget>
</PropertyGroup>
.
.
.
<ItemGroup>
.
.
.
-
Сохраните изменения и закройте файл *.csproj
.
-
Перезагрузите проект (щелкните правой кнопкой мыши → Обновить проект).
-
В диспетчере конфигурации (Build → Configuration Manager) убедитесь, что для вашего проекта выбрана платформа .NET 4.5.
-
В диспетчере конфигурации создайте новую платформу решений для ".NET 4.5" (вы можете использовать ее "Любой процессор" ) и убедитесь, что для решения выбрано ".NET 4.5".
-
Создайте проект и проверьте наличие ошибок.
-
Предполагая, что сборка завершена, вы можете проверить, что вы действительно нацелились на 4.5, добавив ссылку на 4.5 конкретного класса в исходный код:
using System;
using System.Text;
namespace testing
{
using net45check = System.Reflection.ReflectionContext;
}
-
При компиляции с использованием платформы .NET 4.5 сборка должна быть успешной. Когда вы компилируете под платформой "Любой процессор", вы должны получить ошибку компилятора:
Error 6: The type or namespace name 'ReflectionContext' does not exist in
the namespace 'System.Reflection' (are you missing an assembly reference?)
Ответ 3
FYI, если вы хотите создать пакет установщика в VS2010, к сожалению, он предназначен только для .NET 4. Чтобы обойти это, вы должны добавить NET 4.5 в качестве условия запуска.
Добавьте следующие условия в Условия запуска установщика (щелкните правой кнопкой мыши, View, Launch Conditions).
В "Поиск целевой машины" щелкните правой кнопкой мыши и выберите "Добавить поиск в реестре".
Property: REGISTRYVALUE1
RegKey: Software\Microsoft\NET Framework Setup\NDP\v4\Full
Root: vsdrrHKLM
Value: Release
Добавить новое "Состояние запуска":
Condition: REGISTRYVALUE1>="#378389"
InstallUrl: http://www.microsoft.com/en-gb/download/details.aspx?id=30653
Message: Setup requires .NET Framework 4.5 to be installed.
Где:
378389 =.NET Framework 4.5
378675 =.NET Framework 4.5.1, установленный с Windows 8.1
378758 =.NET Framework 4.5.1, установленный в Windows 8, Windows 7 с пакетом обновления 1 (SP1) или Windows Vista SP2
379893 =.NET Framework 4.5.2
Ссылка на условие запуска: http://msdn.microsoft.com/en-us/library/vstudio/xxyh2e6a(v=vs.100).aspx
Ответ 4
Я боролся с интеграцией VS2010/DNFW 4.5 и, наконец, получил эту работу. Начиная с VS 2008, был введен кеш сборок, который используется Visual Studio под названием "Связанные сборки". Этот кеш файл для VS 2010 находится в \Reference Assemblies\Microsoft\Framework.NetFramework\v4.0. Visual Studio загружает сборки фреймов из этого места, а не из каталога установки инфраструктуры. Когда Microsoft заявляет, что VS 2010 не поддерживает DNFW 4.5, это означает, что этот каталог не обновляется при установке DNFW 4.5. После того, как вы замените файлы в этом месте обновленными файлами DNFW 4.5, вы обнаружите, что VS 2010 с радостью будет работать с DNFW 4.5.
Ответ 5
Из другого поиска. Работал для меня!
"Вы можете использовать Visual Studio 2010 и поддерживать его, если ваша ОС поддерживает .NET 4.5.
Щелкните правой кнопкой мыши по вашему решению, чтобы добавить ссылку (как и вы). Когда появится диалоговое окно, выберите пункт "Просмотр", затем перейдите к следующей папке:
C:\Program Files (x86)\Reference Assemblies\Microsoft\Framework \.Net Framework\4.5
Вы найдете его там.