Direcionando o .NET Framework 4.5 via Visual Studio 2010


169

Hoje instalei o .NET Framework 4.5 em minha máquina, esperando poder usá-lo no Visual Studio 2010, já que é apenas uma pequena atualização que não deve causar problemas para o Visual Studio 2010. Infelizmente, não estou, mesmo removendo manualmente alguns 4.0 e adicionar os 4.5 conjuntos correspondentes resultou nos conjuntos 4.0 originais ainda sendo referenciados no projeto.

É possível segmentar a versão 4.5 do Visual Studio 2010 e, em caso afirmativo, como? Eu realmente gostaria de usar as fitas ...


Você deve atualizar para o Visual Studio 2012 for .NET v4.5 support.
— Arranjo

Conheci essa limitação quando estava tentando usar o método System.Threading.Tasks.Task.Run () em um aplicativo de console do VS 2010. Este método não aparece na classe Task se o seu projeto está direcionado ao .Net framework 4.0 e, em seguida, você percebe que o VS2010 não pode direcionar o .Net framework 4.5, se desejar.
— RBT

Respostas:


194

Cada versão do Visual Studio anterior ao Visual Studio 2010 está vinculada a uma estrutura .NET específica. (O VS2008 é o .NET 3.5, o VS2005 é o .NET 2.0, o VS2003 é o .NET1.1) O Visual Studio 2010 e posteriores permitem o direcionamento de versões anteriores da estrutura, mas não podem ser usados ​​em versões futuras. Você deve usar o Visual Studio 2012 para utilizar o .NET 4.5.


9
Não é inteiramente verdade - o .NET 3.0 foi lançado entre as versões do VS e pode ser usado no VS2005.
— Sly Gryphon

9
Que enigma: migrar para o vs2012 + para utilizar um detalhe do .net 4.5 com o custo de perder o amado projeto de instalação do vs2010 para implantar instaladores msi ... "upgrade" parece mais um desvio ...
— ecoe

6
@ecoe - Há um VS 2013 extensão que traz de volta o Setup & Deployment tipo de projeto: visualstudiogallery.msdn.microsoft.com/...
— ajawad987

2
Isto está incorreto. Você não precisa atualizar para usar este recurso. Tudo que você precisa fazer é adicionar uma nova referência e, em seguida, navegue até a pasta .NET 4.5: C: \ Arquivos de Programas (x86) \ Assemblies de Referência \ Microsoft \ Framework \\. Net Framework \ 4.5. Você encontrará a referência lá. Basta adicionar e ele funciona
— Hermes Trismegisto

2
@HermesTrismegistus no VS 2010 Clico em "Target Framework = Install Other Frameworks" e ele me leva a um site microsoft.com/net/download/visual-studio-sdks Ele não me permite navegar para nenhuma pasta. O que devo fazer. eu devo poder alvejar 4.5 do VS 2010. Tks.
— Echeban

67

Existem cenários bastante limitados nos quais posso pensar onde isso seria útil, mas vamos supor que você não possa obter fundos para comprar o VS2012 ou algo nesse sentido. Se esse for o caso, e você tiver o Windows 7+ e o VS 2010, poderá usar o seguinte hack que montei, o que parece funcionar (mas ainda não implantei totalmente um aplicativo usando esse método).

  1. Faça backup do seu arquivo de projeto !!!

  2. Baixe e instale o Windows 8 SDK, que inclui o .NET 4.5 SDK.

  3. Abra seu projeto no VS2010.

  4. Crie um arquivo de texto em seu projeto nomeado Compile_4_5_CSharp.targetscom o seguinte conteúdo. (Ou faça o download aqui - Não se esqueça de remover a extensão ".txt" do nome do arquivo):

    <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. Descarregue seu projeto (clique com o botão direito do mouse -> descarregar).

  6. Edite o arquivo do projeto (clique com o botão direito do mouse -> Editar * .csproj).

  7. Faça as seguintes alterações no arquivo do projeto:

    uma. Substitua o padrão Microsoft.CSharp.targetspelo arquivo de destino criado na etapa 4

    <!-- Old Import Entry -->
    <!-- <Import Project="$(MSBuildBinPath)\Microsoft.CSharp.targets" /> -->
    
    <!-- New Import Entry -->
    <Import Project="Compile_4_5_CSharp.targets" />
    

    b. Mude a plataforma padrão para.NET 4.5

    <!-- Old default platform entry -->
    <!-- <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform> -->
    
    <!-- New default platform entry -->
    <Platform Condition=" '$(Platform)' == '' ">.NET 4.5</Platform>
    

    c. Adicione AnyCPUplataforma para permitir o direcionamento de outras estruturas, conforme especificado nas propriedades do projeto. Isso deve ser adicionado logo antes da primeira <ItemGroup>tag no arquivo

    <PropertyGroup Condition="'$(Platform)' == 'AnyCPU'">
        <PlatformTarget>AnyCPU</PlatformTarget>
    </PropertyGroup>
    
    .
    .
    .
    <ItemGroup>
    .
    .
    .
    
  8. Salve suas alterações e feche o *.csprojarquivo.

  9. Recarregue seu projeto (clique com o botão direito do mouse -> Recarregar Projeto).

  10. No gerenciador de configuração (Build -> Configuration Manager), verifique se a plataforma ".NET 4.5" está selecionada para o seu projeto.

  11. Ainda no gerenciador de configuração, crie uma nova plataforma de solução para ".NET 4.5" (você pode basear-se em "Qualquer CPU") e verifique se ".NET 4.5" está selecionado para a solução.

  12. Crie seu projeto e verifique se há erros.

  13. Assumindo que a compilação foi concluída, você pode verificar se realmente está direcionando o 4.5 adicionando uma referência a uma classe específica do 4.5 ao seu código-fonte:

    using System;
    using System.Text;
    
    namespace testing
    {
        using net45check = System.Reflection.ReflectionContext;
    }
    
  14. Quando você compila usando a plataforma ".NET 4.5", a compilação deve ter êxito. Ao compilar na plataforma "Qualquer CPU", você deve receber um erro do compilador:

    Error 6: The type or namespace name 'ReflectionContext' does not exist in
    the namespace 'System.Reflection' (are you missing an assembly reference?)
    

3
isso é krazy, mesmo que funcionasse, elementos da interface do usuário, como o designer de faixa de opções, funcionariam sem grandes quantidades de xaml e outros erros? srsly basta atualizar.
— Tipo anônimo

1
Além da resposta de David Woodward, adicionei: <OutputPath>bin\</OutputPath>ao primeiro PropertyGroup, quando ocorreu o erro abaixo: A propriedade OutputPath não está definida para o projeto 'nome do projeto'.
— precisa saber é

Isso realmente funciona. Mas estou apenas usando-o para poder continuar executando Moles no VS2010 após a instalação do .NET Framework 4.5.1.
— Conrad Clark

1
Não consegui descobrir como executar com êxito a etapa 11, "... criar uma nova plataforma de solução ...", mas descobri que as instruções tiveram êxito geral se a etapa 11 for ignorada.
— precisa saber é o seguinte

8

Para sua informação, se você deseja criar um pacote do Instalador no VS2010, infelizmente ele é direcionado apenas para o .NET 4. Para contornar isso, você deve adicionar o NET 4.5 como uma condição de inicialização.

Adicione o seguinte nas condições de inicialização do instalador (clique com o botão direito do mouse em Exibir, condições de inicialização).

Em "Search Target Machine", clique com o botão direito do mouse e selecione "Add Registry Search".

Property: REGISTRYVALUE1
RegKey: Software\Microsoft\NET Framework Setup\NDP\v4\Full
Root: vsdrrHKLM
Value: Release

Adicione uma nova "Condição de inicialização":

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.

Onde:

378389 = .NET Framework 4.5

378675 = .NET Framework 4.5.1 instalado com o Windows 8.1

378758 = .NET Framework 4.5.1 instalado no Windows 8, Windows 7 SP1 ou Windows Vista SP2

379893 = .NET Framework 4.5.2

Referência da condição de inicialização: http://msdn.microsoft.com/en-us/library/vstudio/xxyh2e6a(v=vs.100).aspx


3

Tenho lutado com a integração do VS2010 / DNFW 4.5 e finalmente consegui isso. A partir do VS 2008, foi introduzido um cache de assemblies usado pelo Visual Studio chamado "Assemblies Referenciados". Esse cache de arquivo para o VS 2010 está localizado em \ Reference Assemblies \ Microsoft \ Framework.NetFramework \ v4.0. O Visual Studio carrega os assemblies de estrutura desse local em vez do diretório de instalação do framework. Quando a Microsoft diz que o VS 2010 não oferece suporte ao DNFW 4.5, o que eles significam é que esse diretório não é atualizado quando o DNFW 4.5 é instalado. Depois de substituir os arquivos nesse local pelos arquivos DNFW 4.5 atualizados, você descobrirá que o VS 2010 funcionará felizmente com o DNFW 4.5.


0

De outra pesquisa. Trabalhou para mim!

"Você pode usar o Visual Studio 2010 e ele suporta, desde que o seu sistema operacional suporte o .NET 4.5.

Clique com o botão direito do mouse na sua solução para adicionar uma referência (como você faz). Quando a caixa de diálogo aparecer, selecione procurar e navegue até a seguinte pasta:

C: \ Arquivos de programas (x86) \ Assemblies de referência \ Microsoft \ Framework \ .Net Framework \ 4.5

Você encontrará lá. "


6
Na frase "Você encontrará lá", o que é "isso"? Qual arquivo nessa pasta selecionamos? Um deles nos permitirá direcionar o .net 4.5 no VS 2010?
— Jeff Roe

Você encontrará os assemblies de namespace. Você pode adicionar o que quiser. Por exemplo, eu precisava usar um método para trabalhar com arquivos ZIP. Então eu encontrei a dll "System.IO.Compression.dll" e a adicionei ao meu projeto. Então, eu poderia listar explicitamente o espaço para nome no meu código e usar os métodos necessários.
— Hermes Trismegistus

1
Isso não funciona para mim. Se você remover sua referência a, digamos, System, e depois procurar o .Net 4.5 System.dll e adicionar isso como referência, o VS ainda seleciona a resposta 4.0 System.dll Capt Nasty nesta página funciona para mim, por exemplo, copiar System.dll de C: \ Arquivos de programas (x86) \ Assemblies de referência \ Microsoft \ Framework \ .NETFramework \ v4.6 e solte-o sobre System.dll em C: \ Arquivos de programas (x86) \ Reference Assemblies \ Microsoft \ Framework \ .NETFramework \ v4.0. Observe, porém, que esse é um truque desagradável e pode ter consequências não intencionais.
— Jinlye
Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.