2010-09-14 8 views
2

Je suis en cours d'exécution d'un exécutable .NET 2.0 avec une extension .com à partir d'une ligne de commande et la réception de l'erreur suivante:BadImageFormatException - Est-il possible de spécifier quelle version .NET est utilisée pour exécuter un exécutable?

System.BadImageFormatException : The module was expected to contain an assembly manifest. (Exception from HRESULT: 0x80131018) 

Je suis sûr qu'il essaie de charger un DLL du .NET 2.0 mondial Assembly Cache.

J'ai seulement cette erreur sur les machines avec .net 4.0/visual studio 2010 installé, donc je suppose qu'il utilise la mauvaise version du framework .net pour fonctionner. Des idées sur la façon de confirmer cette hypothèse?

ou existe-t-il un moyen de spécifier le programme pour utiliser .net 2 runtime au lieu de .net 4 pour exécuter le fichier .com?

+0

Avez-vous renommé le fichier exécutable avec l'extension '.com'? –

+0

L'exécutable .com est un assembly tiers avec une version d'exécution cible de .net v2.0.50727. Mais ne fonctionne pas sur les machines qui ont à la fois .NET v2 et v4 (et v3.5). – robbie

Répondre

1

Si seulement .NET Framework 4.0 est installé et que vous souhaitez exécuter une version d'application pour/avec .NET 2.0, vous devez informer le Framework .NET 4.0 que l'application requiert .NET 2.0 Runtime. Cela est fait en utilisant un fichier de configuration avec les entrées suivantes.

L'attribut nécessaire de définir est le useLegacyV2RuntimeActivationPolicy

<?xml version="1.0" encoding="utf-8" ?> 
<configuration> 
<startup useLegacyV2RuntimeActivationPolicy="true"> 
    <supportedRuntime version="v2.0.50727"/> 
    <supportedRuntime version="v4.0.30319"/> 
</startup> 
</configuration> 
+0

merci pour la réponse rapide - c'est une application tierce donc je ne peux pas le modifier. – robbie

+1

@robbie. Vous n'avez pas besoin de modifier l'application. Créez un fichier .config pour l'exécutable et placez le texte ci-dessus dans le fichier .config. – Jehof

+0

wow bon à savoir - merci! – robbie

Questions connexes