请告诉我以下场景是否可以用普通版的 VS 实现,我的意思是非团队版。首先,我们的团队足够小,大约 10 名开发人员,我们使用 SVN 作为存储库。每个开发人员的目录结构都相对相同,为简单起见,它看起来像
工作\部署
工作\来源
所有项目都位于“Sources”目录中,并将输出 dll 放在“Deploy”目录中。
所以想象一下,一个正在处理项目“CoreLibrary”,输出 dll 是 CoreLibrary.dll,第二个正在处理“SomeLibrary”项目,用作参考 CoreLibrary.dll。这是简化的情况,在现实生活中,这个项目可能依赖于许多 dll,这些 dll 由其他开发人员负责。在这种情况下,可能是在编译 SomeLibrary 后更改 CoreLibrary 的情况。例如忘记通知其他开发人员更新他们的参考资料。而这些更改使 SomeLibrary 项目无法编译,但只有在运行时才能知道 -) 所以为了避免这种情况,我们还决定将所有项目合并到一个复合解决方案中,其中一个项目应该引用其他项目 - 而不是它的输出 dll,因此,如果整体解决方案构建意味着一切都是兼容的。但是有一个问题 - 为此我们需要将源项目的依赖关系从 dll 更改为项目。如果我们打开独立项目,我们会在这个引用的对面出现感叹图标,但项目仍然可以编译。
即作为结论 - 我们通过 dll 在项目(每个项目 - 原子功能)之间进行引用。原子性导致当我们改变一个“原子”时,我们必须检查这种变化是否与其他依赖原子兼容。这更便于获得整体解决方案,我们在其中加载最新的源代码并尝试编译。但是,我们需要将项目之间的依赖关系从 dll 更改为项目。这似乎不太“正确”,因为更改了源独立项目中的引用。为所有开发人员制定一个大解决方案,强迫他们重新编译所有源代码,不仅他的项目也很糟糕。