Как заставить приложение использовать конкретную версию .NET? - PullRequest
1 голос
/ 19 мая 2010

Я использую 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 и мониторинге процесса агента я мог видеть, что исполняемый файл агента использует сборки .NET 1.1 в Windows 2003 и .NET 2.0 в Windows 2008, что может быть объяснением этого поведения. Как заставить агент использовать .NET 2.0 в Windows 2003? Я использую Visual Studio 2005 для создания тестов.

1 Ответ

0 голосов
/ 20 мая 2010

Создайте файл .config для приложения и вставьте / объедините следующее (конечно, с версией, которую вы хотите, это для 2.0 RTM):

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

Это, например, загрузит .NET 2 даже для приложения 1.1 или если неуправляемое приложение активирует COM-объект 1.1.

...