私がテストしているDLLは、AssemblyCulture
の無効な値であると思われるDLLにリンクしています。値は "Neutral"(大文字の "N"に注意)ですが、私がテストしているDLLとプロジェクトの他のすべてのDLLは "中立"の値を持っています(AssemblyCulture("")
を指定しているため)。VSTSテストのデプロイメントと無効なアセンブリカルチャ
私は、問題のDLLへリンクが、私はVSTSにこのエラーが出るというDLLを展開しよう:
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>
私はVSTSラッパーテストでDLL(にリンクしていない場合でも、 、またはNUnitテストで)、私はGenericTestファイル(私はNUnitテストをラッピングしています)に追加するとすぐに、その例外が発生します。
問題の原因はDLLではなく、コードにも署名があるため、再コンパイルでは解決できません。
DLL DeploymentItemの依存関係の展開をスキップして、カルチャチェックを修正または無効にする方法、または複雑な方法で(おそらく何らかの形でアセンブリを埋め込む)この問題を回避する方法はありますか?文化の価値を無効にする方法はありますか?DLLをハッキングしないようにしてください(コード署名を削除してハックが機能するようにする)?外部マニフェストを使用している可能性がありますか?
プロダクションコードが奇妙に変わることなく、適切な解決策が必要です。たとえば、ハッキングされたDLLを展開することはできません。また、コードカバレッジのためにDLLをインスツルメントする必要があります。
その他の注意:テスト中のDLLをコンパイルするときに、問題のDLLにリンクするリンカーの警告が表示されますが、これはVSTS以外に何も破損せず、複数のバージョンが出荷されています。