如何在一个解决方案中共享源项目之间的许多二进制文件?

Pro*_*ofK 5 .net c# visual-studio nuget visual-studio-2013

我有一个小的解决方案,大约有不到20个项目.该解决方案过去还包含由第三方服务提供商ACME编写的大约六个源项目.现在,最后,这个对方向我们提供了一些DLL.我过去只是在解决方案中包含了他们的源代码,每个DLL的一个项目,所以我正在寻找一种巧妙的方法将所有这些程序集包含在解决方案中,因此可以从需要它们的许多项目中引用它们.

我立即明显的选择是:

  1. 创建AcmeAssembly项目,将所有DLL添加为要复制到输出的项目项.
  2. 创建AcmeAssembly解决方案文件夹.比"仅二进制"源项目更快更简单,但解决方案文件夹具有非常大的缺点,即无法在没有解决方案文件的情况下对文件进行分组,即在VS之外.
  3. 创建一个包含所有必需二进制文件的NuGet包.然后至少我们在packages文件夹中也有一个部分"phycical"分组.我的问题是我从来没有写过NuGet包,但我不是在问这里怎么样.我问三个候选解决方案,欢迎更多,如果NuGet获胜,我会学习写一个包.

我不能简单地使用项目的输出bin\debugbin\release文件夹.对我来说,这些是严格的输出文件夹,除此之外,还应该输出其他依赖程序集.删除bin文件夹应该对构建产生绝对零影响,因此当然不能存储二进制文件.

Ern*_*rno 1

nuget 相对于其他解决方案的优点是:

  1. 支持版本控制
  2. Visual Studio 和 MSBuild 内置支持
  3. 所有开发人员的计算机上都不需要有“神奇文件夹”