我有两个有一些公共代码的解决方案,所以我想把它提取出来并在它们之间共享。此外,我希望能够独立地发布这个库,因为它可能对其他人有用。
用Visual Studio 2008最好的方法是什么? 一个项目是否存在于多个解决方案中? 对于这段单独的代码,我有单独的解决方案吗? 一个解决方案能依赖于另一个解决方案吗?
我有两个有一些公共代码的解决方案,所以我想把它提取出来并在它们之间共享。此外,我希望能够独立地发布这个库,因为它可能对其他人有用。
用Visual Studio 2008最好的方法是什么? 一个项目是否存在于多个解决方案中? 对于这段单独的代码,我有单独的解决方案吗? 一个解决方案能依赖于另一个解决方案吗?
当前回答
现在您可以使用共享项目了
Shared Project is a great way of sharing common code across multiple application We already have experienced with the Shared Project type in Visual Studio 2013 as part of Windows 8.1 Universal App Development, But with Visual Studio 2015, it is a Standalone New Project Template; and we can use it with other types of app like Console, Desktop, Phone, Store App etc.. This types of project is extremely helpful when we want to share a common code, logic as well as components across multiple applications with in single platform. This also allows accessing the platform-specific API ’s, assets etc.
更多信息请看这个
其他回答
您只需创建一个单独的Class Library项目来包含公共代码。它不需要成为任何使用它的解决方案的一部分。从任何需要它的项目引用类库。
唯一的技巧是,您将需要使用文件引用来引用项目,因为它不会是引用它的解决方案的一部分。这意味着实际的输出程序集必须放置在任何构建引用它的项目的人都可以访问的位置。例如,这可以通过将程序集放在共享上来实现。
您可以在多个解决方案中包含一个项目。我不认为一个项目有属于哪个解决方案的概念。然而,另一种替代方法是将第一个解决方案构建到一些众所周知的地方,并引用已编译的二进制文件。这样做的缺点是,如果您想根据您构建的是发布配置还是调试配置来引用不同的版本,那么您将需要做一些工作。
我不相信您可以让一个解决方案依赖于另一个解决方案,但是您可以通过自定义脚本以适当的顺序执行自动构建。基本上把你的公共库当作另一个第三方依赖,比如NUnit等。
在跨项目重用代码时,使用“添加现有文件链接”是一个很好的例子,那就是当您需要引用和支持不同版本的依赖库时。
使用不同外部程序集的引用创建多个程序集,如果不重复代码或利用源代码控制的技巧,就不容易做到这一点。
我相信维护一个用于开发和单元测试的项目是最简单的,然后当您需要创建引用这些外部程序集的不同版本的程序集时,使用现有的文件链接创建“构建”项目。
现在您可以使用共享项目了
Shared Project is a great way of sharing common code across multiple application We already have experienced with the Shared Project type in Visual Studio 2013 as part of Windows 8.1 Universal App Development, But with Visual Studio 2015, it is a Standalone New Project Template; and we can use it with other types of app like Console, Desktop, Phone, Store App etc.. This types of project is extremely helpful when we want to share a common code, logic as well as components across multiple applications with in single platform. This also allows accessing the platform-specific API ’s, assets etc.
更多信息请看这个
您可以在多个解决方案中包含相同的项目,但是您一定会在某个时候遇到问题(例如,当您移动目录时,相对路径可能会失效)。
经过多年的努力,我终于提出了一个可行的解决方案,但它要求您使用Subversion进行源代码控制(这并不是一件坏事)
在解决方案的目录级别,添加一个svn:externals属性,指向您希望包含在解决方案中的项目。Subversion将从存储库中提取项目,并将其存储在解决方案文件的子文件夹中。解决方案文件可以简单地使用相对路径来引用项目。
如果我有更多的时间,我会详细解释这一点。