如果我有一个构建nuget包的项目(P1),并使其依赖于不构建nuget包的项目(P2),生成的包仍将引用P2作为nuget包。
其他问题
- 将 .NET Standard 库打包为 NuGet 包并包含所有项目依赖项 / 引用 相关,但假设使用
复现步骤
- 创建一个包含2个C#项目(P1和P2)的解决方案
- 使P1依赖于P2。
向P1.csproj添加以下行(使其构建nuget包)
<GeneratePackageOnBuild>true</GeneratePackageOnBuild>
- 构建解决方案
- 在例如NuGet Package Explorer中打开生成的P1.nupkg
请注意,NuGet包依赖于另一个名为P2的NuGet包。但是,该包不存在,并且永远不会存在,因为我没有告诉P2项目构建nuget包。
问题
我该如何强制 P2.dll 包含在 P1.nupkg 的 lib 文件夹中?理想情况下,它仅会强制对不创建 NuGet 包的引用生效。其他问题
- 将 .NET Standard 库打包为 NuGet 包并包含所有项目依赖项 / 引用 相关,但假设使用
nuget pack
。我正在使用 dotnet build
或 Visual Studio 构建 NuGet 包,因此不适用。
- 此 GitHub 查询 与我的问题几乎相同。
P1
是一个库还是应用程序项目?它有nuspec
文件吗,还是通过项目属性配置包?对于使用nuspec
文件的 NuGet 包,您可以在此处阅读如何包含其他文件:https://learn.microsoft.com/de-de/nuget/reference/nuspec#including-assembly-files(但请注意,与 Microsoft 所写的相反,<files>
元素不支持通配符!)。对于没有 nuspec 文件的新格式,我不知道如何包含其他文件。 - NicolasP1
和P2
都是库(但这有什么区别吗?)。目前它没有nuspec文件,因为我正在使用新的“精简”项目格式,这应该使其大体上冗余。请注意,我希望通过Visual Studio或dotnet build
进行构建 - 我实际上并没有使用nuget pack
或类似工具... - RB.nuspec
手动包含P2
,或c)尝试手动包含P2
,使用新格式-我找到了这个,但迄今为止还没有尝试过:https://tyrrrz.me/Blog/Additional-NuGet-files-in-new-csproj - Nicolas