【问题标题】:Is it possible to get the version of an assembly that is in internet, like onedrive?是否可以获得 Internet 上的程序集版本,例如 onedrive?
【发布时间】:2017-05-19 10:57:49
【问题描述】:

要在本地获取程序集的版本,我使用以下代码:

Version myVersion = AssemblyName.GetAssemblyName(myPathToDll).Version;

这样做的好处是不会将程序集加载到内存中,因此不会被阻塞,而且如果它是局域网内的远程服务器,我也不需要传输整个dll。

但是,我想知道如果这个 dll 是云,是否有某种方法可以检查 dll 的版本,例如在 onedrive 或网页中......等等。

我想避免必须将文件下载到本地计算机并检查它,因为我的想法是开发一个更新应用程序,在启动时检查更新并下载所有 dll 会使应用程序在启动。

谢谢。

【问题讨论】:

  • 为什么不在您的 dll 存在的同一个地方有一个 API 端点,您的应用程序可以查询版本? API 可以从 dll 中读取版本,速度很快,只需将其返回给应用程序。
  • 在一个平面文件中简单地维护当前版本号并与之进行比较不是更简单吗? 会使应用程序在启动时非常慢异步/在另一个线程中执行,然后在完成时通知用户是否需要他们的注意。
  • @AlexK。对,我想在同一个地方有一个 .txt 文件,而不是 dll 版本的 dll,所以获取版本只需要几个字节,而且速度非常快。如果版本更新,那么我下载 dll。

标签: c#


【解决方案1】:

默认情况下,您无法使用 .NET Framework 执行此操作。 AssemblyName.GetAssemblyName 不支持 HTTP。

你可以这样做:

  • 为程序集创建一个HttpWebRequest
  • 读取前 X 个字节以从程序集中读取元数据;
  • 分解元数据并读取版本。

这是很多工作,我无法帮助您编写代码。您需要考虑是否值得花时间。

另一种选择可能是为您完成所有这些工作的 Web 服务。这可能是更直接的选择。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2011-07-08
    • 1970-01-01
    • 1970-01-01
    • 2018-06-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多