3

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ではこのアプリケーションに接続できません

4

1 に答える 1

2

問題が見つかりました。

Spoon Studio for .Net 4.0 で使用されるデフォルトの .Net イメージには、必要なすべてのアセンブリが含まれていません。

これは Spoon Studio のバグです。SpoonStudio チームから新しいカスタム イメージを取得することで、機能するようになりました。

于 2013-01-14T07:53:06.807 に答える