it-swarm.com.ru

Ориентация на .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 и если да, то как? Я бы очень хотел использовать ленты ...

163
Golvellius

Каждая версия 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.

190
Brad S

Есть довольно ограниченные сценарии, которые я могу придумать, где это было бы полезно, но давайте предположим, что вы не можете получить средства для покупки VS2012 или чего-то подобного. Если это так, и у вас есть Windows 7+ и VS 2010, вы можете использовать следующий взломанный мной хак, который, кажется, работает (но я еще не полностью развернул приложение, использующее этот метод).

  1. Сделайте резервную копию вашего файла проекта !!!

  2. Загрузите и установите Windows 8 SDK , который включает .NET 4.5 SDK.

  3. Откройте свой проект в VS2010.

  4. Создайте в своем проекте текстовый файл с именем 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>
    
  5. Выгрузите ваш проект (щелкните правой кнопкой мыши -> выгрузить).

  6. Отредактируйте файл проекта (щелкните правой кнопкой мыши -> Edit * .csproj).

  7. Внесите следующие изменения в файл проекта:

    а. Замените 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>
    .
    .
    .
    
  8. Сохраните изменения и закройте файл *.csproj.

  9. Перезагрузите ваш проект (щелкните правой кнопкой мыши -> Обновить проект).

  10. В диспетчере конфигурации (Build -> Configuration Manager) убедитесь, что для вашего проекта выбрана платформа .NET 4.5.

  11. Оставаясь в диспетчере конфигурации, создайте новую платформу решений для ".NET 4.5" (вы можете основать ее на "любом процессоре") и убедитесь, что для решения выбрано ".NET 4.5".

  12. Создайте свой проект и проверьте на ошибки.

  13. Предполагая, что сборка завершена, вы можете убедиться, что вы действительно нацеливаетесь на 4.5, добавив ссылку на определенный класс 4.5 в ваш исходный код:

    using System;
    using System.Text;
    
    namespace testing
    {
        using net45check = System.Reflection.ReflectionContext;
    }
    
  14. При компиляции с использованием платформы .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?)
    
66
David Woodward

К вашему сведению, если вы хотите создать пакет установщика в VS2010, к сожалению, он предназначен только для .NET 4. Чтобы обойти это, вы должны добавить NET 4.5 в качестве условия запуска.

Добавьте следующее в Условия запуска программы установки (щелкните правой кнопкой мыши, "Просмотр", "Условия запуска").

В "Search Target Machine" щелкните правой кнопкой мыши и выберите "Добавить поиск в реестре".

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 SP1 или Windows Vista SP2

379893 = .NET Framework 4.5.2

Ссылка на условие запуска: http://msdn.Microsoft.com/en-us/library/vstudio/xxyh2e6a (v = vs.100) .aspx

7
cyberenergy

Я боролся с интеграцией 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.

3
Capt Nasty

Из другого поиска. Работал на меня!

"Вы можете использовать Visual Studio 2010, и он поддерживает его, если ваша ОС поддерживает .NET 4.5.

Щелкните правой кнопкой мыши по вашему решению, чтобы добавить ссылку (как вы делаете). Когда появится диалоговое окно, выберите "Обзор" и перейдите к следующей папке:

C:\Program Files (x86)\Справочные сборки\Microsoft\Framework\.Net Framework\4.5

Вы найдете это там. "

0
Hermes Trismegistus