【问题标题】:How to share libraries without using the GAC?如何在不使用 GAC 的情况下共享库?
【发布时间】:2011-04-10 01:42:07
【问题描述】:

我有一个可供许多网站使用的库。我现在这样做的方式是在库的属性中,我将“构建后事件命令行”设置为:复制“$(TargetPath)”“$(SolutionDir)\MyWebsite\bin\$(TargetFileName)”

每次我想让一个新网站使用共享库时,我都会像这样添加一个新行:copy "$(TargetPath)" "$(SolutionDir)\MyWebsite2\bin\$(TargetFileName)"

除了使用 GAC 之外,还有其他简单或更好的方法吗?

【问题讨论】:

    标签: c# .net asp.net visual-studio-2008 .net-3.5


    【解决方案1】:

    在我看来,您的问题是缺乏对其他项目如何生成和使用该库的控制。如果我是你(我不是:)我会着手通过一个单元测试联合项目来开发这个库,在这个项目中可以独立开发和测试新功能。一旦该功能被实现并测试为在您的单元测试参数中工作,手动将程序集复制到 Web 项目的“库”文件夹中,该文件夹首先需要库的扩展(此文件夹包含该项目使用的所有已编译程序集)。

    更好的办法是维护一个版本系统,您可以在其中标记库的新版本,以便跟踪它正在使用的确切源版本。

    我之所以提出这种看似繁琐的工作方法的原因是,您当前的做法使您现有的网站变得非常脆弱,因为在库中对一个站点所做的更改实际上可能会破坏其他站点之一......并且随着您拥有的网站数量的增加,您不可能永远针对现有网站对共享库的新版本进行复古测试。

    也是出于这些原因,我也不推荐使用 GAC。

    【讨论】:

    • 如果他每次构建新的程序集时都会对程序集进行版本化,只要他的安装程序在 GAC 中保持以前的版本完好无损,将其放入 GAC 就不会成为问题。
    • 你说的太对了,我不应该在没有测试框架的情况下自动复制程序集。感谢您的洞察力! :)
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2021-01-17
    • 1970-01-01
    • 1970-01-01
    • 2014-08-20
    • 2017-02-23
    • 2011-03-24
    • 1970-01-01
    相关资源
    最近更新 更多