NuGet共享库中的跨项目依赖项

时间:2018-02-04 14:22:23

标签: c# .net visual-studio-2017 nuget .net-core

设置:我在VS 2017中创建了一个以.Net Standard 2.0为目标的库,该库使用NuGet引用第三方驱动程序并管理其依赖项。到目前为止,非常好。

下一步是创建一个使用(共享)库的应用程序,在这种情况下是一个针对.Net Core的控制台应用程序。当然,我可以添加对构成共享库的DLL的引用。编译但不会运行,因为缺少第三方的东西。我当然可以将所有必需的DLL复制到应用程序中,但出于显而易见的原因,我宁愿使用NuGet 我对NuGet不是很有经验,从来没有在这个星座中使用它并阅读了NuGet cross-project dependency这样的文章我得到的印象是我需要摆弄应用程序的项目文件以便以完整的形式获取库但肯定不会是前进的方向。

所以我的问题是 - 是库边的问题,即我需要以特定方式构建或导出,还是在应用程序一侧,恕我直言,不应该知道该级别关于它消耗的某个库的详细信息。

非常感谢任何帮助!

1 个答案:

答案 0 :(得分:0)

我通过这种方式与其他几种解决方案共享一个庞大而复杂的库。

首先,设置您的库。右键单击库的项目名称,然后选择“属性”。大约一半时,您会看到标签为Packages的标签。您可以使用它在每次重建项目时自动生成NuGet包。只需增加版本号即可。我使用四个位置版本编号 - 前三个是semver-style(主要版本,次要版本,补丁版本),第四个是我为每个新版本手动增加的。

我建议您在驱动器或网络上专门为本地NuGet包创建一个文件夹。您可以为每个项目创建文件夹。然后将调试和发布构建输出指向该项目文件夹,并在那里生成NuGet包。

最后,回到Visual Studio,转到工具 - >选项 - > NuGet包管理器 - > Package Sources并将该顶级文件夹添加为包源。

从那里开始很简单 - 在您的消费应用中打开您的NuGet依赖项。右上角有一个下拉列表,您可以在其中选择包源。它将自动搜索所有子文件夹并查找您创建的任何软件包。现在,当您调整库时,只需单击一下即可更新客户端应用程序。