首页 > 解决方案 > 发布我自己的 Nuget 包时,如何将项目引用指定为 Nuget 包引用?

问题描述

我有一个 Visual Studio 解决方案,它有(以及测试项目等)两个项目,最终将作为 Nuget 包。ProjectA 没有任何依赖关系,但 ProjectB 依赖于 ProjectA。该解决方案位于 GitHub 存储库中,并设置了工作流以构建两个项目并将其发布到 Nuget。

在 Visual Studio 中,我有一个从 ProjectB 到 ProjectA 的项目引用,这使得开发和测试变得容易。但是,当我发布时,我希望 ProjectB 对 ProjectA 具有 Nuget 包依赖项,而不是在包中包含 DLL。

是否有捷径可寻?我看到了这个 SO answer,但它似乎非常手动。我希望有一些方法可以作为构建和发布工作流程的一部分来做到这一点。

标签: visual-studionugetnuget-packagegithub-actions

解决方案


默认情况下,当您在 new-sdk 项目下使用ProjectReference来引用Project AProject B,它实际上将项目 A视为 nuget 依赖项。

确保您没有<PrivateAssets>All</PrivateAssets>在项目 B 的 ProjectReference 下添加。PrivateAssetsProject A在您打包时打破 nuget 依赖关系Project B

如果你有这个:

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

请删除 <PrivateAssets>All</PrivateAssets>.

在我这边,当我发布项目 B时,它有 A 的 nuget 项目。

在此处输入图像描述


推荐阅读