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

本文关键字:之间 项目 共享 二进制文件 一个 解决方案 | 更新日期: 2023-09-27 17:59:56

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

我最明显的选择是:

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

我不能简单地使用项目的输出bin'debugbin'release文件夹。对我来说,这些都是严格的输出文件夹,除了其他依赖程序集之外,什么都不应该在那里输出。删除bin文件夹应该对构建没有任何影响,因此肯定没有存储二进制文件的地方。

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

与其他解决方案相比,nuget的优势在于:

  1. 支持版本控制
  2. 支持内置在Visual Studio和MSBuild中
  3. 没有所有开发人员都需要在他们的机器上拥有的"神奇文件夹"

创建Acme库文件夹(类似于:C:''Source''library''AcmeLibrary)。把你所有的Acme dll都放在那个文件夹里。然后在VS中创建解决方案文件夹,并将现有项目添加到其中(不要添加文件夹,而是使用"添加现有项目…"菜单选择将C:''Source''Library''AcmeLibrary文件夹中的项目添加到解决方案文件夹中)。