如何在一个解决方案中的源项目之间共享多个二进制文件?
How to share many binary files between source projects in one solution?
我有一个小的解决方案,大约有不到 20 个项目。该解决方案过去还包含大约六个由第三方服务提供商 ACME 编写的源项目。现在,最后,这个另一方只 向我们提供了一些 DLL。我过去只是在解决方案中包含它们的源代码,每个 DLL 一个项目,所以我正在寻找一种巧妙的方法将所有这些程序集包含在解决方案中,以便可以从需要它们的许多项目中引用它们。
我的直接选择是:
- 创建一个
AcmeAssembly
项目,添加所有 DLL 作为项目项设置复制到输出。
- 创建一个
AcmeAssembly
解决方案文件夹。比 'binary-only' 源项目更快更简单,但是解决方案文件夹有一个非常非常大的缺点,即没有解决方案文件就无法对文件进行分组,即在 VS 之外。
- 创建一个包含所有必需二进制文件的 NuGet 程序包。那么至少我们在
packages
文件夹中也有部分 'phycical' 分组。我的问题是我从来没有写过 NuGet 包,但我不是在问如何写。我问的是三个候选方案,欢迎更多,如果NuGet赢了,我就去学写包。
我不能简单地使用项目的输出 bin\debug
和 bin\release
文件夹。对我来说,这些是严格的输出文件夹,除了其他依赖程序集外,其他任何东西都应该输出在那里。删除 bin
文件夹对构建的影响绝对为零,因此肯定不是存储二进制文件的地方。
创建您的 Acme 库文件夹(类似于:C:\Source\Library\AcmeLibrary)。将所有 Acme dll 放在该文件夹中。然后在VS中创建Solution Folder并将现有的项目添加到其中(不要添加文件夹,而是使用"Add Existing Item..."菜单选择将C:\Source\Library\AcmeLibrary文件夹中的项目添加到解决方案文件夹中)。
nuget 相对于其他解决方案的优势是:
- 支持版本控制
- 支持内置于 Visual Studio 和 MSBuild
- 没有 'magic folders' 所有开发人员都需要在他们的机器上安装
我有一个小的解决方案,大约有不到 20 个项目。该解决方案过去还包含大约六个由第三方服务提供商 ACME 编写的源项目。现在,最后,这个另一方只 向我们提供了一些 DLL。我过去只是在解决方案中包含它们的源代码,每个 DLL 一个项目,所以我正在寻找一种巧妙的方法将所有这些程序集包含在解决方案中,以便可以从需要它们的许多项目中引用它们。
我的直接选择是:
- 创建一个
AcmeAssembly
项目,添加所有 DLL 作为项目项设置复制到输出。 - 创建一个
AcmeAssembly
解决方案文件夹。比 'binary-only' 源项目更快更简单,但是解决方案文件夹有一个非常非常大的缺点,即没有解决方案文件就无法对文件进行分组,即在 VS 之外。 - 创建一个包含所有必需二进制文件的 NuGet 程序包。那么至少我们在
packages
文件夹中也有部分 'phycical' 分组。我的问题是我从来没有写过 NuGet 包,但我不是在问如何写。我问的是三个候选方案,欢迎更多,如果NuGet赢了,我就去学写包。
我不能简单地使用项目的输出 bin\debug
和 bin\release
文件夹。对我来说,这些是严格的输出文件夹,除了其他依赖程序集外,其他任何东西都应该输出在那里。删除 bin
文件夹对构建的影响绝对为零,因此肯定不是存储二进制文件的地方。
创建您的 Acme 库文件夹(类似于:C:\Source\Library\AcmeLibrary)。将所有 Acme dll 放在该文件夹中。然后在VS中创建Solution Folder并将现有的项目添加到其中(不要添加文件夹,而是使用"Add Existing Item..."菜单选择将C:\Source\Library\AcmeLibrary文件夹中的项目添加到解决方案文件夹中)。
nuget 相对于其他解决方案的优势是:
- 支持版本控制
- 支持内置于 Visual Studio 和 MSBuild
- 没有 'magic folders' 所有开发人员都需要在他们的机器上安装