2010-05-19 8 views
1

J'utilise pnunit pour exécuter des tests de NUnit sur des machines distantes, l'agent pnunit charge le test et il fonctionne sous Windows 2008, mais le test ne se charge dans Windows 2003, l'erreur de l'agent estComment faire en sorte que l'application utilise une version spécifique de .NET?

INFO PNUnit.Agent.PNUnitAgent - Registering channel on port 9080 
INFO PNUnit.Agent.PNUnitAgent - RunTest called for Test MyTest, AssemblyName test.dll, TestToRun test.Program.myDeployTest 
INFO PNUnit.Agent.PNUnitTestRunner - Spawning a new thread 
INFO PNUnit.Agent.PNUnitTestRunner - Thread entered for Test MyTest:test.Program.myDeployTest Assembly test.dll 

Unhandled Exception: System.BadImageFormatException: The format of the file 'test 
' is invalid. 
File name: "test" 

Server stack trace: 
at System.Reflection.Assembly.nLoad(AssemblyName fileName, String codeBase, B 
oolean isStringized, Evidence assemblySecurity, Boolean throwOnFileNotFound, Ass 
embly locationHint, StackCrawlMark& stackMark) 

sur l'exécution procmon et en surveillant le processus de l'agent, je pouvais voir que l'exécutable de l'agent utilisait des assemblys .NET 1.1 sous Windows 2003 et .NET 2.0 sous Windows 2008, ce qui pourrait expliquer ce comportement. Comment obtenir l'agent pour utiliser .NET 2.0 sur Windows 2003? J'utilise Visual Studio 2005 pour créer les tests.

+0

Windows 2003 x86 et Windows 2008 x64? –

+1

Pouvez-vous confirmer que .Net 2.0 est installé sur la machine 2003? Il est étrange qu'il n'ait pas choisi .Net 2.0 s'il a été installé sur la boîte 2003 car il a fait défaut à l'infrastructure .Net 2.0 sur la machine 2008. – Sijin

+0

@Sijin, pourquoi cela serait-il étrange? Par défaut, le runtime correspondant exact est choisi autant que je peux dire de mon expérience avec ce problème dans le passé. Ainsi, si vous exécutez une application 1.0 sur une machine avec 1.1 et 2.0, elle peut charger 2.0, mais une application 1.1 sur une machine avec 1.1 chargera 1.1 à mon expérience. – Lucero

Répondre

0

Créer un fichier .config pour l'application et insérer/fusionner les éléments suivants (bien sûr avec la version que vous voulez, ceci est pour 2.0 RTM):

<configuration> 
    <startup> 
    <supportedRuntime version="v2.0.50727"/> 
    <requiredRuntime version="v2.0.50727" safemode="true"/> 
    </startup> 
</configuration> 

Ce par exemple chargera .NET 2 même pour une application 1.1 ou si une application non gérée active un objet COM 1.1.

+0

Merci, ça a marché – carrutherji

Questions connexes