我有两个有一些公共代码的解决方案,所以我想把它提取出来并在它们之间共享。此外,我希望能够独立地发布这个库,因为它可能对其他人有用。
用Visual Studio 2008最好的方法是什么? 一个项目是否存在于多个解决方案中? 对于这段单独的代码,我有单独的解决方案吗? 一个解决方案能依赖于另一个解决方案吗?
我有两个有一些公共代码的解决方案,所以我想把它提取出来并在它们之间共享。此外,我希望能够独立地发布这个库,因为它可能对其他人有用。
用Visual Studio 2008最好的方法是什么? 一个项目是否存在于多个解决方案中? 对于这段单独的代码,我有单独的解决方案吗? 一个解决方案能依赖于另一个解决方案吗?
当前回答
在跨项目重用代码时,使用“添加现有文件链接”是一个很好的例子,那就是当您需要引用和支持不同版本的依赖库时。
使用不同外部程序集的引用创建多个程序集,如果不重复代码或利用源代码控制的技巧,就不容易做到这一点。
我相信维护一个用于开发和单元测试的项目是最简单的,然后当您需要创建引用这些外部程序集的不同版本的程序集时,使用现有的文件链接创建“构建”项目。
其他回答
您只需创建一个单独的Class Library项目来包含公共代码。它不需要成为任何使用它的解决方案的一部分。从任何需要它的项目引用类库。
唯一的技巧是,您将需要使用文件引用来引用项目,因为它不会是引用它的解决方案的一部分。这意味着实际的输出程序集必须放置在任何构建引用它的项目的人都可以访问的位置。例如,这可以通过将程序集放在共享上来实现。
您可以在多个解决方案中包含相同的项目,但是您一定会在某个时候遇到问题(例如,当您移动目录时,相对路径可能会失效)。
经过多年的努力,我终于提出了一个可行的解决方案,但它要求您使用Subversion进行源代码控制(这并不是一件坏事)
在解决方案的目录级别,添加一个svn:externals属性,指向您希望包含在解决方案中的项目。Subversion将从存储库中提取项目,并将其存储在解决方案文件的子文件夹中。解决方案文件可以简单地使用相对路径来引用项目。
如果我有更多的时间,我会详细解释这一点。
在跨项目重用代码时,使用“添加现有文件链接”是一个很好的例子,那就是当您需要引用和支持不同版本的依赖库时。
使用不同外部程序集的引用创建多个程序集,如果不重复代码或利用源代码控制的技巧,就不容易做到这一点。
我相信维护一个用于开发和单元测试的项目是最简单的,然后当您需要创建引用这些外部程序集的不同版本的程序集时,使用现有的文件链接创建“构建”项目。
从VisualStudio 2015开始,如果您将所有代码保存在一个解决方案中,您可以通过添加共享项目来共享代码。 然后为您想在其中使用代码的每个项目添加对该共享项目的引用,以及适当的使用指令。
您可以在两个项目之间“链接”代码文件。右键单击项目,选择“添加->现有项目”,然后单击“添加”按钮旁边的向下箭头:
根据我的经验,链接比创建库简单。链接代码会产生一个版本的单一可执行文件。