【问题标题】:Shared assemblies in one location?在一个位置共享程序集?
【发布时间】:2012-10-30 08:19:14
【问题描述】:

我有一个包含许多子项目的大项目。 (如图所示)

WebSiteAWebSiteB 都引用了两个 DLL 项目。

但是,当我更改 dll 时 - 我需要更新每个网站中的 each bin。

我不想这样。

我知道我可以将它们放入 GAC,但我被告知不要(请不要问我为什么。)

有没有类似的解决方案:

所以当我更新任何 dll 时 - 我只把它放在一个地方? (因此 dll 不会位于每个站点的 bin

【问题讨论】:

  • 难道不能从两个项目中提取共同的特征并创建一个最终将被WebSiteA和WebSiteB引用的公共dll吗?这样一来,网站 A 和网站 B 的更新就不会发生冲突。

标签: c# asp.net .net .net-4.0 shared-libraries


【解决方案1】:

您可以使用.refresh 文件参考来制造技巧,但未在实时服务器上测试

首先将您的公用 dll 放在公用目录中。
其次,在每个 bin 上,将 *.refresh 文件与 dll 放在一起,里面说明如果找到新版本,从哪里更新 dll。

所以你在 Bins 里面有类似的东西:

mySuperModule.dll
mySuperModule.dll.refresh

mySuperModule.dll.refresh里面是需要检查更新的模块的位置 ->

d:\Dlls\mySuperModule.dll

d:\dlls 是搜索新更新的 dll 的常用位置。

最后你只更新了公共目录的 dll,你离开了项目,其余的都是自动的。

【讨论】:

  • 解决这个问题的方法很有趣,可以尝试一下。
  • @RyanMcDonough 我已经在本地完成了,并且有效。但是在实时服务器上,我们会一一更新所有服务器 - 我们遇到和你一样的问题:)
  • @Aristos 所以假设我有一个 myGame 项目,我需要引用一个 dll。当我引用外部 dll 时 - 它被复制到本地 bin .....那么好处在哪里?
  • @RoyiNamir 在我的项目中,我总共构建了 10 个 dll 模块,所有这些库都会自动复制到 bin。但是其中一些,比如说其中的 4 个,他们使用一个通用的 dll 来构建,比如说一个 DAL 库。所以我只更新一个dll,然后在构建这4个dll时自动将所有新版本的通用dll一起构建,然后自动将4+1复制到最终bin。如果我必须复制 dal dll,我必须在模块上复制 5 次 4 次且没有错误,最后一个 bin 上一次。
  • @Aristos 你可以去聊天吗? chat.stackoverflow.com/rooms/19041/…
【解决方案2】:

GAC 的全部意义在于提供该功能,如果您不使用该功能,则无法以您想要的方式共享 DLL。这是由于网站是如何保护和相互分离的。

【讨论】:

    猜你喜欢
    • 2011-11-29
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-02-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多