【问题标题】:ASP.NET Web Reference Missing from DLLDLL 中缺少 ASP.NET Web 引用
【发布时间】:2012-12-26 17:22:35
【问题描述】:

我正在使用在 Visual Studio 2008 中创建的 .NET 3.5 类库,后来在 Visual Studio 2010 中更新和重新编译。最奇怪的事情正在发生:解决方案资源管理器中列出的 Web 引用之一确实实际上没有编译到 DLL 中(通过使用 .NET Reflector 检查 DLL 来证明),并且分别没有错误或警告。我尝试使用谷歌搜索并搜索此站点,但找不到任何适用的信息。任何关于为什么会发生这种情况的建议将不胜感激!希望提供的信息足够;否则我应该能够提供更多。

编辑: Web 引用的命名空间显示在解决方案资源管理器中,但不在对象浏览器中。我的一些同事说这是 Web 服务本身的问题。我应该提到它是一个 SAP Web 服务,在开发过程中,我们正在与最近升级的测试环境进行交互,并且可能会出现问题。一旦我更加确定,我会确认这是否是原因,所以请不要犹豫,同时分享任何相关信息。

编辑 (2):请参阅我对Cyborgx37's answer 的第一个回复以进一步说明,包括生成的客户端错误。

【问题讨论】:

    标签: asp.net missing-data web-reference


    【解决方案1】:

    这有点令人费解:我所做的只是将 Web 引用放入对象浏览器中 - 从而在编译时放入实际的 DLL 中 - 将其重命名为其他名称,然后将其恢复为旧名称(即可选以保持名称相同)。一定喜欢奇怪的微软问题。希望这可以帮助其他最终遇到同样问题的人!

    【讨论】:

    • 感谢您发布您的解决方案。欢迎使用 StackOverflow。
    【解决方案2】:

    如果我理解正确,您想知道为什么引用的程序集没有编译您的 DLL。

    引用的程序集通常不会编译到 DLL 中。相反,您的 DLL 将包含一个指向外部资源的指针,而 .NET 将尝试使用几种策略之一来定位它(然后将其加载到内存中以便您的应用程序可以使用它)。

    您可能会发现这篇文章很有启发性:

    How the Runtime Locates Assemblies
    要成功部署您的 .NET Framework 应用程序,您必须了解公共语言运行时如何定位和绑定到构成您的应用程序的程序集。 ...

    【讨论】:

    • 我所指的项目中有近40个Web References。编译项目后,除了一个之外的所有 Web 引用在生成的 DLL 模块中都有自己的命名空间(如通过 .NET Reflector 所证明的那样)。在运行时,当调用缺少其命名空间的 Web 引用时,会生成此客户端错误:“System.TypeLoadException:无法从程序集 [assembly][type] /i>。”我非常感谢您及时而详细的回复,但我认为它不能回答我的问题,因为这与此 Web 参考有明显的不同。
    • 此信息对您的问题很有用。不幸的是,我没有遇到这个问题,所以我无法为您提供更多信息。
    • 如果我不够具体,我深表歉意。我最终会弄清楚并分享我的发现。再次感谢!
    猜你喜欢
    • 1970-01-01
    • 2011-09-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-06-21
    • 1970-01-01
    • 1970-01-01
    • 2011-04-15
    相关资源
    最近更新 更多