Ориентация .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

Вы найдете его там.