【问题标题】:Could not load MyAssembly.XmlSerializers.dll. The system cannot find the file specified无法加载 MyAssembly.XmlSerializers.dll。该系统找不到指定的文件
【发布时间】:2014-02-23 06:49:17
【问题描述】:

我最近安装了 Visual Studio 2012。

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

'System.TypeInitializationException: 'MyType' 的类型初始化器 抛出异常。 ---> System.IO.FileNotFoundException: 不能 加载文件或程序集“MyAssembly.XmlSerializers”或其之一 依赖关系。系统找不到指定的文件。

在 System.Reflection.RuntimeAssembly._nLoad(AssemblyName 文件名, 字符串 codeBase、证据 assemblySecurity、RuntimeAssembly locationHint, StackCrawlMark& stackMark, IntPtr pPrivHostBinder, Boolean throwOnFileNotFound, Boolean for Introspection, Boolean 抑制安全检查)

在 System.Reflection.RuntimeAssembly.nLoad(AssemblyName 文件名, 字符串 codeBase、证据 assemblySecurity、RuntimeAssembly locationHint, StackCrawlMark& stackMark, IntPtr pPrivHostBinder, Boolean throwOnFileNotFound, Boolean for Introspection, Boolean 抑制安全检查)

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

什么可能导致这个意外问题?

【问题讨论】:

  • 您是否在项目参考中检查过该程序集?如果它在那里,请在“属性”窗口中查看它正在寻找的路径,并确保它是正确的。
  • *.XmlSerializers.dll 不是标准参考。它是 .Net 在需要时动态生成的参考。
  • 同样的事情。您确定它在动态生成时指向的路径有效吗?
  • 文件永远不会生成,所以路径无效。但是,我没有对项目本身进行任何代码或配置更改。
  • 我最近得到了这个,发现它掩盖了一个 BadImageFormatException。尝试打开 fusion logging 并查看是否存在无法加载的程序集。我认为例外是红鲱鱼。

标签: c# visual-studio


【解决方案1】:

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

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

【讨论】:

    【解决方案2】:

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

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

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

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

    【讨论】:

      猜你喜欢
      • 2020-07-08
      • 1970-01-01
      • 2013-12-26
      • 1970-01-01
      • 1970-01-01
      • 2015-01-22
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多