3

我在使用 Spoon Studio 和 .Net 4.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 包后,我们开始看到此错误。

我知道解决这个问题的一种方法是预先生成 XmlSerializers,但在我们的例子中,我们有多个加载项也需要重建,我们希望避免这样做。

我的问题是为什么会发生这种情况?为什么运行时无法在运行时生成序列化程序?我可以看到在 temp 目录中生成了 .cs 和 .out 文件(dll 也暂时生成并立即删除)。

如果我在没有虚拟化的情况下运行我的应用程序,它可以正常工作并且能够构建和加载内存中的序列化程序。在这两种情况下,运行应用程序的用户都是相同的。

欢迎任何建议。

这是一个单独的问题,但我无法在 VS 或 windbg 中进行调试(我得到 clr version mismatch error b/w VS and Application)

原因是:在机器上安装 VS12/.Net 4.5 将 CLR 版本号升级到 4.0.30319.17929,而应用程序使用 4.0.30319.1。并且 VS 不允许我附加到这个应用程序

4

1 回答 1

2

我们找到了问题所在。

Spoon Studio 用于 .Net 4.0 的默认 .Net 映像中没有所有必需的程序集。

这是 Spoon Studio 中的一个错误。我通过从 SpoonStudio 团队获取新的自定义图像来使其工作。

于 2013-01-14T07:53:06.807 回答