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

时间:2015-06-26 08:34:08

标签: c# .net visual-studio visual-studio-2013 nuget

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

我明显的选择是:

  1. 创建一个AcmeAssembly项目,将所有DLL添加为要复制到输出的项目项。
  2. 创建AcmeAssembly解决方案文件夹。比“仅二进制”源项目更快更简单,但解决方案文件夹的缺点是无法在没有解决方案文件的情况下对文件进行分组,即在VS之外。
  3. 创建一个包含所有必需二进制文件的NuGet包。那么至少我们在packages文件夹中也有一个部分“phycical”分组。我的问题是我从来没有写过NuGet包,但我不是在问这里怎么样。我问的是三个候选解决方案,欢迎更多,如果NuGet获胜,我会学习写一个包。
  4. 我不能简单地使用项目的输出bin\debugbin\release文件夹。对我来说,这些是严格的输出文件夹,除此之外,还应该输出其他依赖程序集。删除bin文件夹应该对构建产生绝对零影响,因此当然不能存储二进制文件。

2 个答案:

答案 0 :(得分:0)

创建您的Acme库文件夹(类似于:C:\ Source \ Library \ AcmeLibrary)。将所有Acme dll放在该文件夹中。然后在VS中创建解决方案文件夹并将现有项添加到它(不要使用“添加现有项...”菜单将文件夹,但C:\ Source \ Library \ AcmeLibrary文件夹中的项目添加到解决方案文件夹中选择)。

答案 1 :(得分:0)

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

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