无法加载文件或程序集“MyAssembly.XmlSerializers”。

44
我对 IIS 进行了内存转储,分析时发现出现了错误,错误信息如下:'Could not load file or assembly MyAssemblyName.XmlSerializers'。在我的代码中,我使用 XmlSerializer 类将 xml 文件中的内容序列化和反序列化为自定义对象。项目构建后,只生成了 MyAssembly.dll 和 MyAssembly.pdb 文件,但没有生成 MyAssembly.XmlSerializers.dll 文件。有人知道如何启用项目以创建 xmlserializers.dll 文件吗?注意:在项目构建选项卡中,“生成序列化程序集”设置为“自动”。 谢谢。
3个回答

70

这里已经有一个答案了 (链接)。 显然这是微软不打算修复的“预期行为”。

第一条评论中提供了一种解决方法:

摆脱这个问题的可能方法之一是在“工具”->“选项”->“调试”->“常规选项”中勾选“只查看我的代码”选项


5
这真是太有帮助了!谁能想到那个解决方法。 - Shahzad Qureshi
1
这对我有效。 - user15535192
1
在VS 2022中,该选项被命名为“启用仅限我的代码”。 - undefined

4
您还可以使用Sgen.exe生成这个程序集。

对于我来说,它位于:C:\Program Files (x86)\Microsoft SDKs\Windows\v8.1A\bin\NETFX 4.5.1 Tools

1. open cmd command
2. cd yourProjectPath
3. sgen Project.dll

以下命令将创建一个名为Project.XmlSerializers.dll的程序集,用于序列化名为Project.dll的程序集中包含的所有类型。

1
当您创建MyAssembly.XmlSerializers.dll时,请确保它与您的项目使用相同的.NET版本。您可以使用dotPeek或ILSpy等软件进行检查。当我从Visual Studio为我的.NET 3.5解决方案创建xml序列化程序集时,我遇到了类似的问题,生成序列化程序集被设置为项目,但是Sgen.exe是从C:\Program Files (x86)\Microsoft SDKs\Windows\v10.0A\bin\NETFX 4.6.1 Tools使用的,应该是从C:\Program Files (x86)\Microsoft SDKs\Windows\v7.0A\Bin使用。 如果您的解决方案在.NET 3.5中,则MyAssembly.XmlSerializers.dll也必须在.NET 3.5中。

2
兄弟;所有的代码都在同一个项目中 - 只有一个.NET版本来统治它们所有 :) - Christian

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