繁体   English   中英

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

[英]How to share many binary files between source projects in one solution?

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

我立即明显的选择是:

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

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

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

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

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM