当我发布自己的Nuget包时,如何将项目引用指定为Nuget包引用?

10
我有一个Visual Studio解决方案,其中包括两个项目(以及测试项目等),这两个项目最终将成为Nuget软件包。ProjectA没有任何依赖关系,但ProjectB依赖于ProjectA。该解决方案位于GitHub存储库中,设置了工作流程来构建和发布这两个项目到Nuget。
在Visual Studio中,我在ProjectB中引用了ProjectA的项目,以使开发和测试变得容易。然而,当我发布时,我希望ProjectB在Nuget软件包上对ProjectA具有依赖性,而不是将DLL文件包含在软件包中。
有什么简单的方法可以做到这一点吗?我看到了这个SO答案,但它似乎非常手动化。我希望能够在构建和发布工作流程的一部分中完成此操作。

如果两个项目直接相关,那么使用普通引用没有什么不好。但如果这两个项目毫无关联且分开开发,那就应该有两个不同、独立的代码仓库,ProjectB只需像使用其他库一样通过NuGet来使用ProjectA。 - Alejandro
项目 B 和项目 A 都是使用 PackageReference 的 .NET Standard。 - Mr Qian
如果这并没有帮助到您,您可以与我们分享项目B的csproj文件,或者只是与我们分享一个可复现的样例。 - Mr Qian
1个回答

13
默认情况下,当您使用ProjectReferenceProject A引用到新 SDK 项目的Project B中时,它实际上将Project A视为NuGet依赖项。

请确保在Project BProjectReference下没有添加<PrivateAssets>All</PrivateAssets>。添加PrivateAssets将会在打包Project B时破坏Project A的NuGet依赖关系。

如果您有以下内容:

<ItemGroup>
    <ProjectReference Include="..\ProjectA\ProjectA.csproj">
      <PrivateAssets>All</PrivateAssets>
    </ProjectReference>
  </ItemGroup>

请移除 <PrivateAssets>All</PrivateAssets>
在我的环境中,当我发布 项目 B 时,它带有 A 的 nuget 项目。 enter image description here

2
这对我不起作用。当我安装 ProjectB 时出现错误 NU1101 无法找到包 ProjectA。在以下源中不存在此 ID 的任何包:Microsoft Visual Studio 离线包、nuget.org、MyCustomSource - Leemellaret
@Leemellaret 你需要将项目A和项目B一起发布。在这里,给项目一个正确的版本是关键。很可能你没有这样做,因此出现了错误。 - undefined

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接