【问题标题】:Reference remotely located assembly (web uri) from locally installed application?从本地安装的应用程序中引用远程程序集(web uri)?
【发布时间】:2010-04-01 14:52:41
【问题描述】:

我们有一个用于 Windows 的 .NET 应用程序,它由 Microsoft Installer 在本地安装。现在我们需要使用位于我们 Web 服务器上的附加程序集。我们希望引用像https://www.ourserver.com/OurProductName/ExternalLib.dll 这样的远程 uri 并显示附加功能,这些功能大致由已知的通用(“AddIn/Plugin”)接口描述。这些是不是第 3 方插件,我们只是希望能够经常交换应用程序的某些部分,而不需要经常更新软件。

我们的第一个想法是通过设置远程程序集 uri 的路径,在 Visual Studio 中添加某种“远程引用”。但是 Visual Studio 立即将程序集下载到了一个临时目录,并添加了对它的引用。

然后,我们的第二次尝试是简单地使用WebRequest(或WebClient)来检索程序集的二进制流,并使用Assembly.Load(...)“从图像”加载它。这确实有效,但不是很优雅,需要更多额外的编程来验证等。

我们希望 Clickonce 能够提供有用的技术,但显然它只适用于独立应用程序。 (纠正我吗?

有没有办法(.net 本机或框架/api)来引用位于远程的程序集?

提前致谢,复活节快乐!

【问题讨论】:

    标签: .net assemblies reference


    【解决方案1】:

    您可以在 Visual Studio 中添加引用,然后调用 Assembly.Load 从代码中的 URL 加载它。

    只要您在引用上将 Copy LocalSpecific Version 设置为 false,它就不会绑定到该特定版本。

    【讨论】:

    • 您好,实际上,我无法使用 Assembly.Load(...) 从您描述的 Url 加载程序集 - 将 Url 作为位置参数传递是行不通的,所以您需要先下载,然后手动加载字节数组,验证(可能发生错误)等,因此,我认为这不是一个非常“优雅”的解决方案。按照您的描述设置参考选项只会帮助拥有已知的类,但这不是使用类接口时的重点,不幸的是它无助于从 web.xml 引用程序集。感谢您的支持!
    • @Moonground:你需要在VS中添加一个引用,然后使用WebClient从一个字节数组中调用Assembly.Load。在调用任何使用程序集中类型的方法之前,您需要这样做。 (如果未加载程序集,JITter 将失败)
    • 是的。希望你明白这仍然不能让我开心,因为我在之前的评论中写的所有内容仍然适用。
    【解决方案2】:

    支持SLaks(不接受,因为它没有让我更进一步)并“关闭”问题,因为似乎没有更好的方法(目前)然后手动方式。

    【讨论】:

      猜你喜欢
      • 2023-03-22
      • 1970-01-01
      • 2022-10-22
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-09-28
      • 2021-06-19
      • 1970-01-01
      相关资源
      最近更新 更多