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

我最近安装了 Visual Studio 2012。

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

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

在 System.Reflection.RuntimeAssembly._nLoad(AssemblyName 文件名、字符串代码库、证据 assemblySecurity、RuntimeAssembly locationHint、StackCrawlMark 和 stackMark、IntPtr pPrivHostBinder、布尔 throwOnFileNotFound、布尔 forIntrospection、布尔suppressSecurityChecks)

在 System.Reflection.RuntimeAssembly.nLoad(AssemblyName 文件名、字符串代码库、证据 assemblySecurity、RuntimeAssembly locationHint、StackCrawlMark 和 stackMark、IntPtr pPrivHostBinder、布尔 throwOnFileNotFound、布尔 forIntrospection、布尔suppressSecurityChecks)

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

什么可能导致这个意想不到的问题?

stack overflow Could not load MyAssembly.XmlSerializers.dll. The system cannot find the file specified
原文答案
author avatar

接受的答案

情况比我预想的要复杂一些。该程序集的 XMLSerializers DLL 似乎对于我的解决方案中的身份验证至关重要,并且只是“按 [ing] F5 继续运行直到真正的问题发生”并没有导致一些不相关的错误。

我一直无法完全理解根本问题是什么,但似乎在升级 Visual Studio 后动态创建 DLL 存在问题。

我解决此问题的方法是运行 sgen 工具来手动创建序列化程序并将标志“生成序列化程序集”设置为关闭。该过程可以通过添加构建后指令来运行该工具来自动化。

话虽如此,我不知道为什么会首先出现这个问题,因为我确定我没有在 VS2012 中打开该项目。


答案:

作者头像

对我来说,问题是当您更新 Visual Studio 时,VS 开发人员认为您需要将设置重置为默认值。所以他们从参考中删除了 System.XMLSerializers,他们从 Tools -> Options -> Debugging -> General 菜单中禁用了“启用源服务器支持”。

添加上述参考和更新设置使错误消失。

相关问题