SpoonStudioと.Net4.0を使用してパッケージ化された仮想化アプリケーションで次の例外が発生します
Exception='System.IO.FileNotFoundException: Could not load file or assembly 'file:///C:\temp\Serialization\mf3je3jx.dll' or one of its dependencies. The system cannot find the file specified.
File name: 'file:///C:\temp\Serialization\mf3je3jx.dll'
at System.Reflection.RuntimeAssembly._nLoad(AssemblyName fileName, String codeBase, Evidence assemblySecurity, RuntimeAssembly locationHint, StackCrawlMark& stackMark, Boolean throwOnFileNotFound, Boolean forIntrospection, Boolean suppressSecurityChecks)
at System.Reflection.RuntimeAssembly.nLoad(AssemblyName fileName, String codeBase, Evidence assemblySecurity, RuntimeAssembly locationHint, StackCrawlMark& stackMark, Boolean throwOnFileNotFound, Boolean forIntrospection, Boolean suppressSecurityChecks)
at System.Reflection.RuntimeAssembly.InternalLoadAssemblyName(AssemblyName assemblyRef, Evidence assemblySecurity, StackCrawlMark& stackMark, Boolean forIntrospection, Boolean suppressSecurityChecks)
at System.Reflection.Assembly.Load(AssemblyName assemblyRef, Evidence assemblySecurity)
at System.CodeDom.Compiler.CompilerResults.get_CompiledAssembly()
at System.Xml.Serialization.Compiler.Compile(Assembly parent, String ns, XmlSerializerCompilerParameters xmlParameters, Evidence evidence)
at System.Xml.Serialization.TempAssembly.GenerateAssembly(XmlMapping[] xmlMappings, Type[] types, String defaultNamespace, Evidence evidence, XmlSerializerCompilerParameters parameters, Assembly assembly, Hashtable assemblies)
at System.Xml.Serialization.XmlSerializer.GenerateTempAssembly(XmlMapping xmlMapping, Type type, String defaultNamespace)
at System.Xml.Serialization.XmlSerializer..ctor(Type type, String defaultNamespace)
これは、.Net 3.5を使用するまでは正常に機能していましたが、.Net 4.0パッケージに移行した後、このエラーが発生し始めました。
これを解決する1つの方法は、XmlSerializerを事前に生成することであることを理解していますが、この場合、再構築が必要な複数のアドインがあり、それを避けたいと考えています。
私の質問は、なぜこれがまったく起こっているのかということです。ランタイムが実行時にシリアライザーを生成できないのはなぜですか?tempディレクトリに.csファイルと.outファイルが生成されているのがわかります(dllも一時的に生成され、すぐに削除されます)。
仮想化せずにアプリケーションを実行すると、正常に動作し、メモリ内のシリアライザーを構築してロードできます。アプリケーションを実行しているユーザーは、どちらの場合も同じです。
どんな提案も歓迎します。
これは別の問題ですが、VSまたはwindbg内でこれをデバッグできません(VSとアプリケーションでclrバージョンの不一致エラーが発生します)
理由:マシンにVS12 / .Net 4.5をインストールすると、CLRバージョン番号が4.0.30319.17929にアップグレードされますが、アプリケーションは4.0.30319.1を使用します。VSではこのアプリケーションに接続できません