请告诉我,如果可以使用常规版本的VS实现以下方案,我的意思是非团队版。 首先,我们的团队足够小,大约有10名开发人员,我们使用SVN作为存储库。每个开发人员的目录结构都相对相同,为简单起见,它看起来像
工作\部署
Working \ Sources
所有项目都驻留在“Sources”目录中,并将输出dll放在“Deploy”目录中。
所以想象一下,正在研究项目“CoreLibrary”,输出dll是CoreLibrary.dll,第二个是“SomeLibrary”项目,它用作参考CoreLibrary.dll。这是简化的情况,在现实生活中,这个项目可能依赖于许多dll,这是其他开发人员的责任。在编译SomeLibrary之后更改CoreLibrary时,可能出现这种情况。例如,忘记通知其他开发人员更新他们的引用。而这些更改使SomeLibrary项目无法编译,但只能在运行时知道 - ) 因此,为了避免这种情况,我们决定在一个复合解决方案中将所有项目联合起来,其中一个项目可以引用其他项目 - 而不是它的输出dll,因此如果整体解决方案构建意味着所有项目都是兼容的。但是有一个问题 - 为此我们需要将源项目的依赖项从dll更改为项目。如果我们打开独立项目,我们就会删除这个参考资料,但项目仍然可以编译。
即结论 - 我们通过dll在项目(每个项目 - 原子功能)之间引用。原子性导致当我们改变一个“原子”时,我们必须检查这种变化是否与其他相关原子相容。这对于整体解决方案更方便,我们加载最新的源并尝试编译。但是,我们需要更改项目之间的依赖关系从dll到项目。这似乎不太“正确”,因为源独立项目中的更改引用。 为所有开发人员制定一个大解决方案,迫使他们重新编译所有资源,而不仅仅是他的项目也很糟糕。
答案 0 :(得分:1)
我处理的情况与此非常相似,我们处理它的方式是每个开发人员都有自己的解决方案,在解决方案中我们添加了所有正在使用的项目。这可以防止项目(或dll)因项目(或dll)更改而未能看到这些更改而导致的事件,因为您引用的是旧版本。因此,只要文件在您引用的项目中更新并构建解决方案,该文件就会更新,从而反映出更改。据我所知,这是正确的方法。当我们尝试使用源代码控制中的解决方案时,我们倾向于引用错误,这就是我们切换到只检查解决方案内部项目的原因。