Как заставить приложение использовать конкретную версию.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.