У меня есть DLL, которую я тестирую, которая ссылается на DLL, которая, как мне кажется, является недопустимым значением для AssemblyCulture
. Значение равно «Нейтральный» (обратите внимание на прописную букву «N»), в то время как проверяемая DLL и каждая другая DLL в моем проекте имеют значение «нейтрально» (потому что они указывают AssemblyCulture("")
).
Когда я пытаюсь развернуть DLL, которая связывает с проблемной DLL, я получаю эту ошибку в VSTS:
Failed to queue test run '...': Culture is not supported.
Parameter name: name
Neutral is an invalid culture identifier.
<Exception>System.Globalization.CultureNotFoundException: Culture is not supported. Parameter name: name
Neutral is an invalid culture identifier.
at System.Globalization.CultureInfo..ctor(String name, Boolean useUserOverride)
at System.Globalization.CultureInfo..ctor(String name)
at System.Reflection.RuntimeAssembly.GetReferencedAssemblies(RuntimeAssembly assembly)
at System.Reflection.RuntimeAssembly.GetReferencedAssemblies()
at Microsoft.VisualStudio.TestTools.Utility.AssemblyLoadWorker.ProcessChildren(Assembly assembly)
at Microsoft.VisualStudio.TestTools.Utility.AssemblyLoadWorker.GetDependentAssemblies(String path)
at Microsoft.VisualStudio.TestTools.Utility.AssemblyLoadWorker.GetDependentAssemblies(String path)
at Microsoft.VisualStudio.TestTools.Utility.AssemblyLoadStrategy.GetDependentAssemblies(String path)
at Microsoft.VisualStudio.TestTools.Utility.AssemblyHelper.GetDependentAssemblies(String path, DependentAssemblyOptions options, String configFile)
at Microsoft.VisualStudio.TestTools.TestManagement.DeploymentManager.GetDependencies(String master, String configFile, TestRunConfiguration runConfig, DeploymentItemOrigin dependencyOrigin, List`1 dependencyDeploymentItems, Dictionary`2 missingDependentAssemblies)
at Microsoft.VisualStudio.TestTools.TestManagement.DeploymentManager.DoDeployment(TestRun run, FileCopyService fileCopyService)
at Microsoft.VisualStudio.TestTools.TestManagement.ControllerProxy.SetupTestRun(TestRun run, Boolean isNewTestRun, FileCopyService fileCopyService, DeploymentManager deploymentManager)
at Microsoft.VisualStudio.TestTools.TestManagement.ControllerProxy.SetupRunAndListener(TestRun run, FileCopyService fileCopyService, DeploymentManager deploymentManager)
at Microsoft.VisualStudio.TestTools.TestManagement.ControllerProxy.QueueTestRunWorker(Object state)</Exception>
Даже если я не буду ссылаться на DLL (в моем тесте оболочки VSTS или в тесте NUnit), как только я добавлю его в свой файл GenericTest (я упаковываю тесты NUnit), я получу это исключение .
У нас нет источника проблемы DLL, и он также подписан кодом, поэтому я не могу решить эту проблему путем перекомпиляции.
Есть ли способ пропустить развертывание зависимостей DLL DeploymentItem, исправить или отключить проверку культуры или обойти это запутанным способом (возможно, каким-то образом встроить сборку)? Есть ли способ переопределить значение для культуры, кроме взлома DLL (и удаления подписи кода, чтобы хак работал)? Может с внешним манифестом?
Любое правильное решение должно работать без странных изменений в рабочем коде. Мы не можем развернуть взломанную DLL, например. Это также должно позволить инструментарию DLL быть покрытым кодом.
Дополнительное примечание: я получаю предупреждение компоновщика при компиляции тестируемой DLL, которая ссылается на проблемную DLL, но это не сломало ничего, кроме VSTS, и отправлено несколько версий.