【问题标题】:changing a dll manifest更改 dll 清单
【发布时间】:2009-08-10 12:46:58
【问题描述】:

我从我们的分包商那里得到了一个完整的 vs2005 项目,这取决于他们的其他几个项目。我没有得到这些项目的源文件,但我确实在 bin/debug 文件夹中有它们的 dll(我们称它们为 a.dll 和 b.dll)。 我将这些 dll 复制到 \lib 文件夹中,并将引用更改为指向那里。我现在遇到的问题是 a.dll 和 b.dll 依赖于我们正在开发的产品的特定版本,而我们这里的系统安装了不同的版本。

是否有足够简单的方法来打开 a.dll 和 b.dll 并更改它们的清单以针对我们的产品版本?或者更好 - 让它们不依赖于特定版本?

【问题讨论】:

    标签: .net dll


    【解决方案1】:

    您可以使用Assembly Binding Redirection 使所需版本实际加载您拥有的版本吗?

    例如在你的 app.settings 文件中,有这样的东西:

    <configuration>
      <runtime>
        <assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1">
          <dependentAssembly>
            <assemblyIdentity name="myAssembly"
                              publicKeyToken="32ab4ba45e0a69a1"
                              culture="en-us" />
            <bindingRedirect oldVersion="1.0.0.0"
                             newVersion="2.0.0.0"/>
          </dependentAssembly>
        </assemblyBinding>
      </runtime>
    </configuration>
    

    【讨论】:

    • 它似乎不起作用。即使我的项目依赖于 a.dll,它是否应该工作,这取决于(让我们承认...)的特定版本 - ESRI.ArcGIS.System?当我将此部分添加到我自己项目的 app.config 中时,它是否会影响 a.dll 在编译时查找的内容?
    • 还有一件事 - a.dll 取决于版本 9.3。我有 9.2 版 - 我可以这样重定向到较低版本吗?
    • 是的,它应该会影响 a.dll 查找的内容。但是,尝试使用 lower 版本似乎是一个非常糟糕的主意。如果它使用 9.3 中的新功能怎么办?
    猜你喜欢
    • 1970-01-01
    • 2013-10-21
    • 2019-10-12
    • 1970-01-01
    • 1970-01-01
    • 2014-01-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多