无法加载 MyAssembly.XmlSerializers.dll。系统找不到指定的文件。

6

我最近安装了Visual Studio 2012。

然而,在安装之后,之前在Visual Studio 2010中正常工作的项目开始抛出并崩溃,出现以下错误:

'System.TypeInitializationException: MyType的类型初始化程序引发了异常。 ---> System.IO.FileNotFoundException: 找不到文件'MyAssembly.XmlSerializers'或它的一个依赖项。系统无法找到指定的文件。

at System.Reflection.RuntimeAssembly._nLoad(AssemblyName fileName, String codeBase, Evidence assemblySecurity, RuntimeAssembly locationHint, StackCrawlMark& stackMark, IntPtr pPrivHostBinder, Boolean throwOnFileNotFound, Boolean forIntrospection, Boolean suppressSecurityChecks)

at System.Reflection.RuntimeAssembly.nLoad(AssemblyName fileName, String codeBase, Evidence assemblySecurity, RuntimeAssembly locationHint, StackCrawlMark& stackMark, IntPtr pPrivHostBinder, Boolean throwOnFileNotFound, Boolean forIntrospection, Boolean suppressSecurityChecks)

我没有将项目升级到VS2012,我仍然像以前一样在VS2010中运行它。我没有对项目本身进行任何更改。唯一的变化是我在机器上安装了VS2012(和.NET 4.5)。

是什么导致了这个意外的问题?


你是否在项目引用中检查了该程序集?如果有,请查看属性窗口中它所寻找的路径,并确保它是正确的。 - itsme86
*.XmlSerializers.dll不是标准引用。它是在需要时由.Net动态生成的引用。 - user472875
那就是一样的了。你确定它在动态生成时指向的路径是有效的吗? - itsme86
文件从未生成,因此路径无效。但是,我没有对项目本身进行任何代码或配置更改。 - user472875
真正的异常是由于该程序集缺少 XmlSerializers DLL 直接导致的 TypeIntializationException。它可能不是真正的异常,但肯定会引起真正的问题。 - user472875
显示剩余8条评论
2个回答

4
这种情况比我预期的更加棘手。该程序集的XMLSerializers DLL似乎对我的解决方案中的身份验证至关重要,而仅仅“按下F5继续运行直到出现真正的问题”并没有导致某些不相关的错误。
我还没有完全理解根本问题是什么,但似乎在升级Visual Studio后动态创建DLL存在问题。
我解决此问题的方法是运行sgen工具手动创建序列化器,并将标志“生成序列化程序集”设置为关闭。可以通过添加后期构建指令来自动化此过程。
话虽如此,我不知道为什么这个问题首先会出现,因为我确定我没有在VS2012中打开该项目。

1

我的问题在于,当你更新Visual Studio时,VS开发人员认为你需要将设置重置为默认值。因此,他们从引用中删除了System.XMLSerializers,并在工具 -> 选项 -> 调试 -> 通用菜单中禁用了“启用源服务器支持”。

添加上述引用并更新设置可使错误消失。


请帮我修复这个问题:在“工具”->“选项”->“调试”->“常规”中启用源服务器支持。 - Guillaume Raymond

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接