170 votes

Ciblant .NET Framework 4.5 via Visual Studio 2010

Aujourd'hui, j’ai installé le .NET Framework 4.5 sur ma machine s’attendent à être capable de l’utiliser dans Visual Studio 2010, puisque c’est juste une mise à jour mineure que should ' t pose des problèmes pour VS2010. Malheureusement je ne suis pas, même manuellement enlever certains 4.0 et ajoutez les 4,5 assemblys correspondantes permis originales 4,0 assemblées toujours référencées dans le projet.

Question : Est-il possible à la version 4.5 de la cible de VS2010 et si oui, comment ? Je tiens vraiment à utiliser les rubans...

195voto

Brad S Points 1334

Chaque version de Visual Studio antérieures à Visual Studio 2010 est liée à un .NET framework spécifique. (VS2008 est .NET 3.5, VS2005 .NET 2.0, VS2003 est. Net1.1) Visual Studio 2010 et au-delà permettant de cibler des versions préalables framework mais ne peut pas être utilisé pour les versions futures. Vous devez utiliser Visual Studio 2012 afin d’utiliser .NET 4.5.

69voto

David Woodward Points 577

Il y a assez limité de scénarios que je peux penser de l'endroit où ce serait utile, mais supposons que vous ne pouvez pas obtenir des fonds pour l'achat de VS2012 ou quelque chose à cet effet. Si c'est le cas et que vous avez Windows 7+ et VS 2010, vous pouvez être en mesure d'utiliser les éléments suivants hack j'ai mis en place ce qui semble fonctionner (mais je n'ai pas entièrement déployé une application à l'aide de cette méthode encore).

  1. Une sauvegarde de votre fichier de projet!!!

  2. Télécharger et installer Windows 8 SDK ce qui inclut le .NET 4.5 SDK.

  3. Ouvrez votre projet dans VS2010.

  4. Créer un fichier texte dans votre projet nommé Compile_4_5_CSharp.targets avec le contenu suivant. (Ou il suffit de le télécharger ici - assurez-vous de supprimer le ".txt" extension du nom de fichier):

    <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. Décharger votre projet (clic droit -> unload).

  6. Modifiez le fichier de projet (clic droit -> Modifier *.csproj).

  7. Apportez les modifications suivantes dans le fichier de projet:

    un. Remplacez la valeur par défaut Microsoft.CSharp.targets , avec pour objectif le fichier créé à l'étape 4

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

    b. Modifier la valeur par défaut de la plateforme d' .NET 4.5

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

    c. Ajouter AnyCPU plate-forme pour permettre un ciblage d'autres cadres, comme spécifié dans les propriétés du projet. Ce doit être ajouté juste avant la première <ItemGroup> balise dans le fichier

    <PropertyGroup Condition="'$(Platform)' == 'AnyCPU'">
        <PlatformTarget>AnyCPU</PlatformTarget>
    </PropertyGroup>
    
    .
    .
    .
    <ItemGroup>
    .
    .
    .
    
  8. Enregistrer vos modifications et fermer l' *.csproj le fichier.

  9. Recharger votre projet (clic droit -> Recharger le Projet).

  10. Dans le gestionnaire de configuration (Build -> Gestionnaire de Configuration) assurez-vous que l' ".NET 4.5" plate-forme est sélectionné pour votre projet.

  11. Toujours dans le gestionnaire de configuration, créer une nouvelle plate-forme de solution pour ".NET 4.5" (vous pouvez la base de it off "any CPU") et assurez-vous ".NET 4.5" est sélectionné pour la solution.

  12. Construire votre projet et vérifier les erreurs.

  13. En supposant que la construction terminée, vous pouvez vérifier que vous êtes bien le ciblage de 4,5 par l'ajout d'une référence à un 4.5 classe spécifique à votre code source:

    using System;
    using System.Text;
    
    namespace testing
    {
        using net45check = System.Reflection.ReflectionContext;
    }
    
  14. Lors de la compilation à l'aide de la ".NET 4.5" plate-forme de l'accumulation devrait réussir. Lorsque vous compilez en vertu de la "any CPU" plate-forme, vous devriez obtenir une erreur de compilateur:

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

16voto

Arran Points 11357

Vous devez mettre à niveau à Visual Studio 2012 pour la prise en charge .NET v4.5.

8voto

cyberenergy Points 71

Pour info, si vous souhaitez créer un package d'installation dans VS2010, malheureusement il ne les cibles .NET 4. Pour contourner ce problème, vous devez ajouter NET 4.5 comme une condition de lancement.

Ajoutez la ligne suivante dans les Conditions de Lancement de l'installeur (clic Droit, Afficher, les Conditions de Lancement).

Dans "Recherche de l'ordinateur Cible", faire un clic droit et sélectionnez "Ajouter un Registre de Recherche".

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

Ajouter un nouveau "Condition de Lancement":

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.

Où:

378389 = .NET Framework 4.5

378675 = .NET Framework 4.5.1 installé avec Windows 8.1

378758 = .NET Framework 4.5.1 installé sur Windows 8, Windows 7 SP1 ou Windows Vista SP2

379893 = .NET Framework 4.5.2

La condition de lancement de référence: http://msdn.microsoft.com/en-us/library/vstudio/xxyh2e6a(v=vs. 100).aspx

6voto

mparkuk Points 225

En plus de la réponse de David Woodward, j’ai ajouté :

à la première PropertyGroup, lorsque l’erreur ci-dessous ont eu lieu :

La propriété OutputPath ne se trouve pas pour le projet « nom du projet ».

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X