Как заставить приложение использовать конкретную версию.NET?

Я использую 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 ответ

Решение

Создать .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.

Другие вопросы по тегам