2011-09-09 6 views
1

Mon application a un Target .NET Framework de 3.0.Application .NET Framework 3.0 sous Windows XP SP3 avec .NET Framework 4.0

J'ai un PC avec une nouvelle installation de Windows XP SP3. Ensuite, j'ai installé .NET Framework 4.0 Full sur celui-ci.

Lorsque je tente de lancer mon application ClickOnce déployée, je reçois le « Impossible de charger le moteur d'exécution » erreur:

[9/9/2011 11:39:53 AM] System.Runtime.InteropServices.COMException 
    - Failed to load the runtime. (Exception from HRESULT: 0x80131700) 
    - Source: System.Deployment 
    - Stack trace: 
     at System.Deployment.Application.NativeMethods.IClrMetaHostPolicy.GetRequestedRuntime(MetaHostPolicyFlags policyFlags, String binaryPath, IStream configStream, StringBuilder version, Int32& versionLength, StringBuilder imageVersion, Int32& imageVersionLength, Int32& pdwConfigFlags, Guid interfaceId) 
     at System.Deployment.Application.NativeMethods.GetAssemblyCacheInterface(String CLRVersionString, Boolean FetchRuntimeHost, CCorRuntimeHost& RuntimeHost) 
     at System.Deployment.Application.PlatformDetector.VerifyPlatformDependencies(AssemblyManifest appManifest, AssemblyManifest deployManifest, String tempDir) 
     at System.Deployment.Application.ApplicationActivator.DownloadApplication(SubscriptionState subState, ActivationDescription actDesc, Int64 transactionId, TempDirectory& downloadTemp) 
     at System.Deployment.Application.ApplicationActivator.InstallApplication(SubscriptionState& subState, ActivationDescription actDesc) 
     at System.Deployment.Application.ApplicationActivator.PerformDeploymentActivation(Uri activationUri, Boolean isShortcut, String textualSubId, String deploymentProviderUrlFromExtension, BrowserSettings browserSettings, String& errorPageUrl) 
     at System.Deployment.Application.ApplicationActivator.ActivateDeploymentWorker(Object state) 

Je crois comprendre que les applications de ciblage .NET 3.0 devrait fonctionner sur les machines qui ont .NET 4.0 installé. Qu'est ce qui cause cette erreur? Dois-je installer .NET Framework 3.5 SP1 sur les ordinateurs Windows XP?

+0

Je pense que je peux écrire un prérequis personnalisé et A) [Vérifier si l'utilisateur a .NET Framework 3.0 installé] (http://stackoverflow.com/questions/199080/how-to-detect-what-net-framework- versions-et-service-packs-sont-installés). (frais XP ne l'aura pas, frais Vista l'aura, frais Win 7 l'aura) B) Si .NET 3 n'est pas installé, installez 3.5. – yarone

+0

OK, cela a fonctionné. Pourquoi l'application ne fonctionne pas correctement (sur XP SP3 avec .NET 4.0) n'a pas de sens pour moi. – yarone

Répondre

3

oui Je voudrais installer le .NET Framework 3.5 et réessayer, si cela ne fonctionne pas, j'installer le 3.0 (Microsoft .NET Framework 3.0 Redistributable Package).

.NET 3.5 SP1 et .NET 4 sont présents dans les machines sur lesquelles nous déployons nos applications.

Edit:

vérifient également les questions suivantes:

What .NET Framework version should I ship with; 2, 3, 3.5?

Is .net framework 2.0 required if 3.5 is installed?

+0

Yuck. Ceci est une application commerciale (à télécharger par n'importe qui sur le web). Je ne veux pas que .NET Framework 3.5 soit téléchargé et installé si l'utilisateur a déjà installé .NET Framework 4.0! Est-ce que je dois écrire un bootstrappeur personnalisé qui vérifie si l'utilisateur est sur XP et si oui, nécessite 3.5? – yarone

+0

Êtes-vous en contrôle de cette application? Est-ce à toi? Pouvez-vous cibler .NET 3.5 ou .NET 4? –

+0

Bien sûr que je pourrais - mais je ne veux pas que les utilisateurs de Vista doivent télécharger .NET 3.5 ou 4.0 sans raison. (.NET 3.0 est livré avec Vista, ce qui explique pourquoi nous visons la version 3.0 pour minimiser le temps de téléchargement et d'installation) – yarone

0

Il est un COMException, donc je dirais que peut-être un composant est pas correctement réglée.

Vérifiez les propriétés de votre projet dans l'onglet Publication. Dans les fichiers d'application, cochez Afficher tous les fichiers et assurez-vous que tout ce dont vous avez besoin est marqué comme inclus.

Dans ce cas, vous pouvez également demander à l'application de télécharger les composants requis (tels que le cadre approprié).

Un tel message d'erreur trompeuse m'est arrivé dans le passé. Peut aussi être juste le cadre comme les autres états de réponse.

+0

Je ne pense pas que ce soit lié à COM. Fonctionne très bien si .NET Framework 3.5 est installé ... – yarone

1

Comme Davide Piras mentionné, vous devez installer .NET 3.0. La raison pour laquelle vous devez faire est que .NET 4 n'est pas un surensemble de dépendances des bibliothèques 3.5/3.0/2.0.

.NET 3.5 est 3.0 bibliothèques plus certains supplémentaires. .NET 3.0 est les bibliothèques 2.0 plus quelques bibliothèques supplémentaires

Toutefois, .NET 4 est un tout nouvel ensemble de bibliothèques qui existent en parallèle aux bibliothèques 2.0/3.0/3.5. Je crois que c'est un résultat de .NET 4 en utilisant une nouvelle exécution de CLR que 2.0/3.0/3.5. Les versions 2.0/3.0/3.5 utilisent toutes le même moteur d'exécution, donc chaque nouvelle version nécessite l'installation des versions antérieures.

Questions connexes