VS - 跨项目管理参考

时间:2013-01-25 21:36:00

标签: c# visual-studio-2010 csproj

我的问题是我有一个包含多个项目的Visual Studio(2010)C#解决方案,并试图为每个项目管理库是噩梦。这些项目中的每一个都包含一些标准库引用(都是预构建的)。

例如:

Class Lib Project 1: A.dll, B.dll, C.dll
Class Lib Project 2: A.dll, B.dll, D.dll

所以在这种情况下,我有来自特定共享驱动器的A.dll和B.dll beign引用。但是,A.dll和B.dll的每个新版本都会进入一个单独的文件夹。因此,如果我想升级到A.dll和B.dll的最新库版本,我必须将两个项目中的引用更改为新位置。

现在,如果它只是2个项目,没什么大不了的。但是,如果让它说10+,那么它就会变得有问题,耗时且容易出错。因为这是一个公司范围的流程,所以我无法创建类似于最新库构建将被复制到的静态位置的目录链接(有时我不想自动升级)。

有没有人知道我可以以某种方式在同一解决方案中跨项目集中库引用(我不需要跨解决方案)?

3 个答案:

答案 0 :(得分:1)

我假设您正在使用源代码管理?将您的引用(二进制文件)添加到您的解决方案中,并将它们与源代码一起保存在本地。

References in Project

通过将所有内容保持在一起,您可以随时返回到源的特定版本并能够构建它,而无需担心您当时使用的二进制文件。

此外,这允许您更新二进制文件 - 然后所有开发人员只要在“获取”时就可以下载最新的二进制文件。

编辑:如果你这样做,你也可以保留一个dll副本,可以被解决方案中的多个项目引用。

答案 1 :(得分:1)

当我处理复杂的项目时(读取10个以上项目的解决方案有点交叉依赖),通常我会在解决方案根目录中创建一个DLL文件夹,在其中存储解决方案项目中使用的所有dll。

从每个项目中我添加del这些DLL的引用,只为可运行的项目(web应用程序,控制台......)添加 copy local 选项

这样,如果我想升级A.dll,我只能在常见的DLLs文件夹中更新并重建解决方案

- solution
 |-DLLs
 |  |- A.Dll
 |  |- B.Dll
 |  |- C.Dll
 |  |- D.Dll
 |- prj1
 |  |- References
 |  |   |- A.Dll
 |  |   |- B.Dll
 |  ...
 |- prj2
 |  |- References
 |  |   |- A.Dll
 |  |   |- B.Dll
 |  |   |- C.Dll
 |  ...
 |- prj3
 |  |- References
 |  |   |- B.Dll
 |  |   |- D.Dll
 |  ...

通常,libs dll(A.dll,B.dll,...)的更新是通过脚本(.bat或.ps1)完成的,因此以某种方式自动但手动触发。无论如何都可能通过预建操作自动触发此操作

我们仅将Nuget用于社区图书馆,尽管可能有private nuget repository对于环境而言太过分了。

答案 2 :(得分:0)

NuGet是要走的路。您仍然需要为每个项目管理它们(每个项目的packages.config),但它为您提供了一个很好的GUI,可以在解决方案级别工作,它将为您批量更新项目。更多详情:http://frozenorange.wordpress.com/2011/10/12/managing-nuget-at-the-visual-studio-solution-level/

NuGet Solution Level