web-dev-qa-db-fra.com

La version cible du .NET Framework ne correspond pas à la condition de lancement

J'ai un projet c # que je construis dans VS 2010. Il fait référence à un projet C++ via COM, qui fait également partie de la solution. Vendredi dernier, j'ai réussi à compiler, à modifier une seule ligne de code, à en créer une autre et j'ai commencé à avoir une erreur à propos de .NET.

La version cible du .NET Framework dans le projet ne correspond pas à la version de condition de lancement du .NET Framework '.NET Framework 3.5'. Mettez à jour la version de la condition de lancement du .NET Framework pour qu'elle corresponde à la version cible du .NET Framework dans la boîte de dialogue Options de compilation avancées (VB) ou la page d'application (C #, F #).

  • Projet -> Propriétés -> Application -> Cadre cible (pour chaque projet en Debug et Release)
  • Projet -> Propriétés -> Publier -> Prérequis (confirmé .NET 3.5 et Windows Installer 3.1)
  • Configuration -> Conditions de lancement -> .NET Framework
  • Configuration -> Propriétés -> Prérequis

J'ai également examiné le code vdproj de mon programme d'installation, confirmant que les conditions de lancement étaient .NET 3.5:

"ComponentsUrl" = "8:"
"Items"
{
    "{EDC2488A-8267-493A-A98E-7D9C3B36CDF3}:Microsoft.Net.Framework.3.5.SP1"
    {
        "Name" = "8:.NET Framework 3.5 SP1"
        "ProductCode" = "8:Microsoft.Net.Framework.3.5.SP1"
    }
    "{EDC2488A-8267-493A-A98E-7D9C3B36CDF3}:Microsoft.Windows.Installer.3.1"
    {
        "Name" = "8:Windows Installer 3.1"
        "ProductCode" = "8:Microsoft.Windows.Installer.3.1"
    }
}

"ComponentsUrl" = "8:"
"Items"
{
     "{EDC2488A-8267-493A-A98E-7D9C3B36CDF3}:Microsoft.Net.Framework.3.5.SP1"
     {
         "Name" = "8:.NET Framework 3.5 SP1"
         "ProductCode" = "8:Microsoft.Net.Framework.3.5.SP1"
     }
     "{EDC2488A-8267-493A-A98E-7D9C3B36CDF3}:Microsoft.Windows.Installer.3.1"
     {
         "Name" = "8:Windows Installer 3.1"
         "ProductCode" = "8:Microsoft.Windows.Installer.3.1"
     }
}

"LaunchCondition"
{
    "{A06ECF26-33A3-4562-8140-9B0E340D4F24}:_799EF2A78D074B669D0B30310FD56A67"
    {
        "Name" = "8:.NET Framework"
        "Message" = "8:[VSDNETMSG]"
        "FrameworkVersion" = "8:.NETFramework,Version=v3.5"
        "AllowLaterVersions" = "11:FALSE"
        "InstallUrl" = "8:http://go.Microsoft.com/fwlink/?LinkId=131000"
    }
}

Depuis que je construis pour un compilateur x86 et x64, j'ai deux projets d'installation. Le second, pour le processeur x86, n'obtient pas l'erreur .NET. J'ai comparé le code dans son vdproj avec cela, et il se ressemble.

J'ai trouvé plusieurs sujets sur ce problème, dont un très bon ici , mais aucun d'entre eux ne m'a aidé à résoudre ce problème. Toute suggestion serait utile.

MODIFIER

J'ai tout changé en .NET 4.0 juste pour voir si cela faisait une différence et le projet a été construit avec succès. Je l'ai changé à nouveau et il m'a donné à nouveau l'erreur de version .NET. J'ai vérifié le fichier vdproj pour toute référence "4.0" et je ne l'ai trouvé que pour AspNetVersion, ce qui se produisait également dans la version x86 du programme d'installation qui fonctionne.

"AspNetVersion" = "8:4.0.30319.0"

J'ai besoin de publier avec .NET 3.5, donc c'était juste un exercice pour voir si changer la version en autre chose et en arrière résoudrait le problème.

23
Tim

Il s'avère que le code C++ a également été associé à .NET pour une raison quelconque. J'ai utilisé this article pour m'aider à changer la version c ++ .NET de 4.0 à 3.5. Les étapes de base sont

  1. Ouvrez le projet c ++ vcxproj dans un éditeur de texte
  2. Trouvez <TargetFrameworkVersion>v4.0</TargetFrameworkVersion>
    • Cela devra peut-être être créé sous le groupe de propriétés Globals
  3. Changer 4.0 à 3.5
  4. Ouvrez le projet dans VS
  5. Cliquez avec le bouton droit sur le projet c ++ et sélectionnez les propriétés.
  6. Sélectionnez Propriétés communes et vérifiez que la version est 3.5.
  7. Sélectionnez Propriétés de configuration -> Général
  8. Assurez-vous que le Platform Toolset est défini sur v90
9
Tim

Pour le modifier via l'interface utilisateur (pas un éditeur de texte). Tiré de ici .

1) Sélectionnez le projet d'installation

2) Dans Explorateur de solutions ou Solution Navigator, cliquez sur l'icône en haut du panneau "Lancer l'éditeur de conditions" (dans VS2010, l'icône avec des jumelles. Dans VS2015 et VS2017, l'icône est une feuille de papier avec un filtre ).

3) Sous Conditions de lancement, sélectionnez ".Net Framework" à droite dans "Propriétés". Sélectionnez "Version". Une liste déroulante s’affiche. changer le cadre en votre cadre cible.

4) Construire et installer.

Si vous recevez ensuite un message semblable au suivant:

AVERTISSEMENT: la version de la condition de lancement du .NET Framework '.NET Framework 4' ne correspond pas au package d'amorçage .NET Framework sélectionné. Mettez à jour la condition de lancement du .NET Framework pour qu'elle corresponde à la version du .NET Framework sélectionnée dans la boîte de dialogue Conditions préalables.

Effectuez les étapes suivantes:

1) Cliquez avec le bouton droit sur le projet d’installation et cliquez sur 'Propriétés'.

2) Cliquez sur le bouton 'Prérequis'.

3) Changer comme vous le souhaitez.

ÉDITER: Mise à jour de la description de l'icône de l'éditeur de conditions de lancement pour différentes versions de VS, conformément aux commentaires.

48
Paul Zahra

Si le même problème que ce projet avait été converti de 2008 à 2010. 

Pour changer le programme d'amorçage, j'ai ouvert le fichier .csproj et supprimé manuellement les instances de la version 3.5:

<BootstrapperPackage Include="Microsoft.Net.Client.3.5">
  <Visible>False</Visible>
  <ProductName>.NET Framework 3.5 SP1 Client Profile</ProductName>
  <Install>false</Install>
</BootstrapperPackage>
<BootstrapperPackage Include="Microsoft.Net.Framework.3.5.SP1">
  <Visible>False</Visible>
  <ProductName>.NET Framework 3.5 SP1</ProductName>
  <Install>false</Install>
</BootstrapperPackage>

En outre, j'ai découvert que vous pouvez simplement cliquer avec le bouton droit de la souris sur le projet d'installation et de déploiement, accéder aux propriétés, accéder aux conditions préalables, puis sélectionner le framework .NET approprié.

Il était difficile de le trouver, vous devez cliquer sur le bouton Conditions préalables.

4
live-love

Je faisais également l'erreur de penser que le travail sur le cadre cible était différent à tous les endroits.Vous pouvez vérifier que, dans les endroits mentionnés ci-dessous, le même cadre devrait être sélectionné.J'utilise VS2015 . Place 1 - clic droit sur Projet-> Propriétés -> application -> cadre cible pour moi (.Net framework 4), vous pouvez sélectionner en fonction de votre projet . Lieu 2 - Faites un clic droit sur le projet d'installation -> propriétés -> conditions préalables -> sélectionnez Microsoft Framework 4 (X86 et X64) pour u dépend de quel framework vous ciblez . Place 3 - Faites un clic droit sur le projet Installer -> cliquez sur voir-> condition de lancement -> .net Framework -> cliquez avec le bouton droit de la souris sur les propriétés-> sélectionnez> net framework 4 . Je travaillais avec les services Windows et je faisais face à ce problème lors de la mise à jour de 2010 à 2015. Espérons que cela vous aidera.

0
Sikandar Singh