2010-01-06 21 views
3

我们有一个供应商正在为我们编写一个应用程序,他使用我提供给他们的一个dll。我的老板刚刚发现,如果我们需要对我们的某个DLL进行更改,则必须向供应商提供更新版本,以便他们可以重新编译他们的项目。这会导致问题,因为我们没有自动化测试,任何新的构建都需要我们的质量检查部门进行完整的运行。定义一个.net引用来始终使用最新版本的GAC'd dll?

我之前没有做过太多与GAC的工作,但相信这可能是我们正在寻找的。有没有办法将我的dll(我提供给供应商的那个)部署到GAC,让供应商构建他们的.net项目,以便始终从GAC获取最新版本?

回答

1

如果您在DLL中做出了重大更改,您当然需要发布新版本,以便供应商可以使用它进行编译。

但是否则无需供应商拥有最新版本。相反,您可以使用Assembly Binding Redirection以确保您在运行时使用最合适的(通常是最新的)版本。

有几种方法可以实现此目的,如链接文章中所述 - 最常见的方法是使用应用程序配置文件中的设置(如果您只想影响此应用程序)或发布者策略文件(如果您想要影响使用共享程序集的所有应用程序)。

+0

默认情况下,任何强签名程序集(您必须执行以将其放入GAC)绑定到特定版本,并打破此建议。如我在我的回答中所建议的那样,供应商必须将'SpecificVersion'选项设置为'false'。 – 2010-01-06 21:04:05

+0

“...打破此建议” - 否,SpecificVersion选项会影响Visual Studio。在运行时,尽管构建时指定了特定的版本,但可以覆盖程序集绑定。 – Joe 2010-01-06 21:08:44

+0

@Joe你能详细说一下吗?如果我有引用第三方库X的项目A,我可以在运行时使用最新可用版本的X来构建A,而不必每次都必须编写绑定重定向配置。 – 2012-05-25 18:01:40

相关问题