如何让应用程序使用特定版本的.NET?

时间:2010-05-19 13:48:20

标签: .net nunit pnunit

我正在使用pnunit在远程计算机上运行nunit测试,pnunit代理加载测试并在Windows 2008中运行它但测试无法在Windows 2003中加载,代理程序错误是

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)

在运行procmon并监视代理进程时,我可以看到代理可执行文件在Windows 2003和Windows 2008上使用.NET 1.1程序集,这可能是对此行为的解释。如何让代理在Windows 2003上使用.NET 2.0?我正在使用Visual Studio 2005来创建测试。

1 个答案:

答案 0 :(得分:0)

为应用程序创建一个.config文件并插入/合并以下内容(当然是您想要的版本,这适用于2.0 RTM):

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

例如,即使是1.1应用程序,或者非托管应用程序激活1.1 COM对象,也会加载.NET 2。