如果我有一个构建 nuget 包的项目 (P1),并且让它依赖于一个不构建 nuget 包的项目 (P2),则生成的包仍将引用 P2作为 nuget 包.
重现步骤
请注意,NuGet 包依赖于另一个名为 P2 的 NuGet 包。但是,该包不存在,也永远不会存在,因为我没有告诉 P2 项目构建 nuget 包。
Question
如何强制 P2.dll 包含在 P1.nupkg 中lib
文件夹?理想情况下,它只会强制它仅用于参考don't自己创建一个nuget包。
其他问题
-
将 .NET 标准库打包为 Nuget 包并包含所有项目依赖项/引用 https://stackoverflow.com/questions/45676872/package-net-standard-library-as-nuget-package-and-include-all-project-dependenc是相关的,但假设使用
nuget pack
。我在用dotnet build
或 Visual Studio 构建 nuget 包,因此不适用。
-
这个 GitHub 查询 https://github.com/nuget/home/issues/3891与我的问题几乎相同。
一种解决方法是将您不想包含的任何资产标记为<PrivateAssets>all</PrivateAssets>
,然后将以下代码包含在您的项目文件中。
See https://github.com/nuget/home/issues/3891#issuecomment-459848847 https://github.com/nuget/home/issues/3891#issuecomment-459848847了解更多信息
<ItemGroup>
<ProjectReference Include="..\ClassLibrary1\ClassLibrary1.csproj">
<PrivateAssets>all</PrivateAssets>
</ProjectReference>
</ItemGroup>
<!--
The following solves the problem that 'dotnet pack' does not include the DLLs from referenced projects.
See https://github.com/NuGet/Home/issues/3891 for a description of the problem
and for newer versions / workarounds / built-in methods.
-->
<PropertyGroup>
<TargetsForTfmSpecificBuildOutput>$(TargetsForTfmSpecificBuildOutput);CopyProjectReferencesToPackage</TargetsForTfmSpecificBuildOutput>
<!-- include PDBs in the NuGet package -->
<AllowedOutputExtensionsInPackageBuildOutputFolder>$(AllowedOutputExtensionsInPackageBuildOutputFolder);.pdb</AllowedOutputExtensionsInPackageBuildOutputFolder>
</PropertyGroup>
<Target Name="CopyProjectReferencesToPackage" DependsOnTargets="ResolveReferences">
<ItemGroup>
<BuildOutputInPackage Include="@(ReferenceCopyLocalPaths->WithMetadataValue('ReferenceSourceTarget', 'ProjectReference')->WithMetadataValue('PrivateAssets', 'all'))" />
</ItemGroup>
</Target>
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)