web-dev-qa-db-fra.com

Ciblage de .NET Framework 4.5 via Visual Studio 2010

Aujourd'hui, j'ai installé .NET Framework 4.5 sur ma machine en espérant pouvoir l'utiliser à partir de Visual Studio 2010, car il ne s'agit que d'une mise à jour mineure qui ne devrait pas poser de problèmes pour Visual Studio 2010. Malheureusement, je ne le fais pas, même en supprimant manuellement certaines versions 4.0. et l'ajout des ensembles 4.5 correspondants a eu pour résultat que les ensembles 4.0 d'origine étaient toujours référencés dans le projet.

Est-il possible de cibler la version 4.5 à partir de Visual Studio 2010 et si oui, comment? J'aimerais vraiment utiliser les rubans ...

164
Golvellius

Chaque version de Visual Studio antérieure à Visual Studio 2010 est liée à un framework .NET spécifique. (VS2008 est .NET 3.5, VS2005 est .NET 2.0 et VS2003 est .NET1.1) Visual Studio 2010 et les versions ultérieures permettent le ciblage des versions précédentes de l'infrastructure, mais ne peuvent pas être utilisés pour les versions ultérieures. Vous devez utiliser Visual Studio 2012 pour utiliser .NET 4.5.

191
Brad S

Je peux imaginer des scénarios assez limités dans lesquels cela pourrait être utile, mais supposons que vous ne pouvez pas obtenir de fonds pour acheter VS2012 ou quelque chose du genre. Si c'est le cas et que vous utilisez Windows 7+ et VS 2010, vous pourrez peut-être utiliser le piratage que j'ai mis en place et qui semble fonctionner (mais je n'ai pas encore déployé complètement une application utilisant cette méthode).

  1. Sauvegardez votre fichier de projet !!!

  2. Téléchargez et installez le Windows 8 SDK qui inclut le .NET 4.5 SDK.

  3. Ouvrez votre projet dans VS2010.

  4. Créez un fichier texte dans votre projet nommé Compile_4_5_CSharp.targets avec le contenu suivant. (Ou simplement le télécharger ici - Assurez-vous de supprimer l'extension ".txt" du nom du 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échargez votre projet (clic droit -> décharger).

  6. Éditez le fichier de projet (clic droit -> Éditer * .csproj).

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

    une. Remplacez le Microsoft.CSharp.targets par défaut par le fichier cible créé à l'étape 4

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

    b. Changez la plate-forme par défaut en .NET 4.5

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

    c. Ajoutez la plate-forme AnyCPU pour permettre de cibler d'autres infrastructures, comme indiqué dans les propriétés du projet. Ceci devrait être ajouté juste avant la première balise <ItemGroup> du fichier

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

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

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

  11. Toujours dans le gestionnaire de configuration, créez une nouvelle plate-forme de solution pour ".NET 4.5" (vous pouvez la baser sur "Tout processeur") et assurez-vous que ".NET 4.5" est sélectionné pour la solution.

  12. Construisez votre projet et vérifiez les erreurs.

  13. En supposant que la construction soit terminée, vous pouvez vérifier que vous ciblez bien la version 4.5 en ajoutant une référence à une classe 4.5 spécifique à votre code source:

    using System;
    using System.Text;
    
    namespace testing
    {
        using net45check = System.Reflection.ReflectionContext;
    }
    
  14. Lorsque vous compilez à l'aide de la plate-forme ".NET 4.5", la construction doit réussir. Lorsque vous compilez sous la plate-forme "Any CPU", vous devriez obtenir une erreur de compilation:

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

Pour votre information, si vous voulez créer un package d'installation dans VS2010, malheureusement, il ne cible que .NET 4. Pour contourner ce problème, vous devez ajouter NET 4.5 comme condition de lancement.

Ajoutez les éléments suivants dans les conditions de lancement du programme d'installation (clic droit, Afficher, conditions de lancement).

Dans "Search Target Machine", cliquez avec le bouton droit de la souris et sélectionnez "Ajouter une recherche dans le registre".

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

Ajouter une nouvelle "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

Référence de condition de lancement: http://msdn.Microsoft.com/fr-fr/library/vstudio/xxyh2e6a (v = vs.100) .aspx

7
cyberenergy

Je me débattais avec l'intégration VS2010/DNFW 4.5 et j'ai enfin réussi à faire fonctionner cela. À partir de VS 2008, un cache d'assemblages utilisé par Visual Studio et appelé "Assemblages référencés" a été introduit. Ce cache de fichier pour VS 2010 se trouve dans\Référence Assemblies\Microsoft\Framework.NetFramework\v4.0. Visual Studio charge les assemblys d'infrastructure à partir de cet emplacement et non à partir du répertoire d'installation de l'infrastructure. Lorsque Microsoft déclare que VS 2010 ne prend pas en charge DNFW 4.5, ce qu’ils signifie est que ce répertoire n’est pas mis à jour lorsque DNFW 4.5 est installé. Une fois que vous avez remplacé les fichiers à cet emplacement par les fichiers DNFW 4.5 mis à jour, vous constaterez que VS 2010 fonctionnera avec bonheur avec DNFW 4.5.

3
Capt Nasty

D'une autre recherche. Travaillé pour moi!

"Vous pouvez utiliser Visual Studio 2010 et le prend en charge, à condition que votre système d'exploitation prenne en charge .NET 4.5.

Faites un clic droit sur votre solution pour ajouter une référence (comme vous le faites). Lorsque la boîte de dialogue s'affiche, sélectionnez Parcourir, puis accédez au dossier suivant:

C:\Fichiers de programme (x86)\Assemblys de référence\Microsoft\Framework\.Net Framework\4.5

Vous le trouverez là-bas. "

0