使用引用的项目创建和安装 nuget 包

Creating and installing a nuget package with referenced project

我想使用 dotnet packdotnet nuget push 发布一个 dotnetcore2.1 nuget 包。

包是一个解决方案中的项目,它引用了该解决方案中的另一个项目。

我无法安装包,因为它无法解析引用的项目。

我试过 this,它包含了引用的包 .dll.nupkg 文件,但仍然无法安装它。

我实在想不出 'expected' 的方法是什么。我绝对不打算将引用的项目发布到 nuget 提要。

这是微软的重大疏忽还是我没有得到什么?

您有一个要打包的项目 A,此项目引用了另一个项目 B,该项目本身不可用或不打算单独使用,但从设计的角度来看它是出于重用等目的将其分开是合理的。最后,项目 A 的包还应该包含项目 B.

确实这是在 NuGet 存储库中跟踪的一个问题,issue 3891. In both this and your link to the corresponding .NET project issue有一些涉及 MS Build 的解决方法,但还没有官方支持。

如上期所述,即使Microsoft seems to be aware本期,也只是为标有

的引用项目创建包

Please do not reference directly

我认为在支持项目引用之前,最安全的方法是这样做,尽管不太方便。变通办法可能会过时或导致奇怪的行为。但是,由于您引用的项目仅打算在您的主库中使用,因此您可以像这样包含它

<PackageReference Include="LLL.Client" Version="1.0.0" PrivateAssets="all"/>

这样,引用项目中的包内容将只包含在您的项目中,主包的使用者将看不到它们。