1

我收到以下错误:

显示名称为“MyWinFormsAssembly”的程序集未能在 ID 为 1 的 AppDomain 的“LoadFrom”绑定上下文中加载。失败的原因是:System.IO.FileNotFoundException:无法加载文件或程序集“MyWinFormsAssembly.Services.XmlSerializers” , Version=1.0.0.0, Culture=neutral, PublicKeyToken=null' 或其依赖项之一。该系统找不到指定的文件。

我知道我可以跳过这个错误,我知道我之前在进行 XML 序列化时收到过这个错误;但这发生在 Web 服务调用上。

该 Web 服务调用继续失败,并出现另一个错误:

无法加载文件或程序集“MyWinFormsAssembly.Services.XmlSerializers,Version=1.0.0.0,Culture=neutral,PublicKeyToken=null”或其依赖项之一。该系统找不到指定的文件。

实际上,我得到了两组这样的错误,它们背靠背调用 Web 服务;然后程序失败了,它只是停止、崩溃、死机,再也没有了。

奇怪的是,如果我开始一个新项目,我可以调用相同的 Web 服务,使用相同的 Web 服务参考代码;它工作得很好,在一个新的 WinForms、WPF、WebForms、控制台和 MVC 项目中,分别测试了一个。

但是当我将核心 dll 和程序集添加回其中时;我最终得到这个错误。我第一次尝试调用这个行代码上调用它,但仍然得到错误。我已经注释掉了所有其他配置数据,将其卸载到另一个程序集,它在我的主项目之外再次正常工作,并尝试再次运行它,第一行代码,没有配置数据,所有内容都被注释掉了,它仍然失败。

我得到的唯一半导数,我不太明白,也不知道如何检查它,是我可能有命名冲突吗?

我已经将 Web 服务放在它自己的 XML 命名空间中,并将其重命名为与 Windows 窗体程序集不同的名称(因为有人将它命名为相同的名称)。

我还将 Windows 窗体程序集重命名为完全不同的名称,并将我的大部分类卸载到单独的“核心”程序集。我将 Web 服务代码本身、其配置以及所有内容卸载到“服务”程序集(它找不到 XmlSerializers 的程序集),但它仍然无法正常工作。

我为此绞尽脑汁将近一个星期,现在我们在生产版本上落后了。

4

1 回答 1

0

sgen.exe为 Web 服务和服务包装器生成一个 Serializers.dll ,每个引用的程序集似乎都可以修复它。

但这并不能解释为什么我首先遇到问题的根源,或者您将如何调试它;或者为什么我需要生成一个序列化程序 dll?那里一定有更好的答案。

于 2013-01-07T18:34:50.520 回答