4

我的问题是我有一个包含多个项目的 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 引用。但是,A.dll 和 B.dll 的每个新版本都会进入一个单独的文件夹。因此,如果我想升级到 A.dll 和 B.dll 的最新库版本,我必须将两个项目中的引用更改为新位置。

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

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

4

3 回答 3

1

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

项目中的引用

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

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

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

于 2013-01-25T21:51:33.627 回答
1

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

从每个项目中,我添加来自这些 DLL 的 del 引用,其中复制本地选项仅适用于可运行项目(Web 应用程序、控制台...)

这样,如果我想升级 A.dll 我只能在 common 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 用于社区库,尽管可能有一个私有的 nuget 存储库,但它对环境来说太多了。

于 2013-01-25T21:54:34.127 回答
0

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

NuGet 解决方案级别

于 2013-01-25T21:45:18.370 回答