如何在不使用GAC的情况下共享库?

问题描述:

我有一个图书馆,这意味着许多网站使用。我现在在做的方式是在库的属性中,我将“生成后事件命令行”设置为:复制“$(TargetPath)”“$(SolutionDir)\ MyWebsite \ bin \ $(TargetFileName)”如何在不使用GAC的情况下共享库?

每次我想要一个新的网站使用共享库,我添加了一个新的生产线是这样的:复制 “$(TARGETPATH)” “$(SolutionDir)\ MyWebsite2 \ BIN \ $(TargetFileName)”

是除了使用GAC之外,还有一个简单或更好的方法可以做到这一点吗?

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

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

我建议什么看起来像一个繁琐的工作方法的原因是,你目前的做法使你现有的网站相当脆弱,因为一个网站的图书馆所做的更改实际上可能会破坏其他网站之一...随着网站数量的增加,您无法永远对现有网站进行新版共享库的复古测试。

这也是因为这些原因,我不要推荐使用GAC。

+0

如果他每次为其构建新版本时都会对其程序集进行版本化,只要他的安装程序在GAC中保持以前的版本不变,则将其放入GAC不应该成为问题。 – VinayC 2010-09-09 05:16:48

+0

你是对的,我不应该在它们之间没有测试框架的情况下自动复制程序集。感谢您的洞察! :) – TruMan1 2010-09-09 10:21:10