NuGet - NU5131: nuspec文件中声明的引用没有被打包。
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了NuGet - NU5131: nuspec文件中声明的引用没有被打包。相关的知识,希望对你有一定的参考价值。
我试图在nupkg中引用两个.dll文件。我在nuspec文件中添加了这两个文件作为引用。
<references>
<reference file="Project.Modules.ModuleA.dll" />
<reference file="Project.Modules.ModuleB.dll" />
</references>
当我尝试打包时,我得到了以下警告,并且软件包没有包含引用的文件。
WARNING: NU5131: Reference were found in the nuspec, but some reference assemblies were not found in both the nuspec and ref folder. 添加以下参考汇编。 - 添加Project.Module.ModuleA.dll到refany目录下 - 添加Project.Module.ModuleB.dll到refany目录下。
我应该把文件放在哪里才能让软件包包含所需的文件?
答案
因为我使用的是.net core 3.1, 所以我只需要在nupkg的project.csproj文件中做一些调整。我是这样做的。
添加一个项目组
<ItemGroup>
<ProjectReference Include="....Project.Modules.ModuleA.csproj" >
<PrivateAssets>all</PrivateAssets>
<ReferenceOutputAssembly>true</ReferenceOutputAssembly>
<IncludeAssets>Project.Modules.ModuleA.dll</IncludeAssets>
</ProjectReference>
<ProjectReference Include="..Project.Modules.ModuleB.csproj" >
<PrivateAssets>all</PrivateAssets>
<ReferenceOutputAssembly>true</ReferenceOutputAssembly>
<IncludeAssets>Project.Modules.ModuleB.dll</IncludeAssets>
</ProjectReference>
</ItemGroup>
然后添加一个目标
<Target DependsOnTargets="ResolveReferences" Name="CopyProjectReferencesToPackage">
<ItemGroup>
<BuildOutputInPackage Include="@(ReferenceCopyLocalPaths->WithMetadataValue('ReferenceSourceTarget', 'ProjectReference'))"/>
</ItemGroup>
</Target>
最后在PropertyGroup元素中添加这个。
<TargetsForTfmSpecificBuildOutput>$(TargetsForTfmSpecificBuildOutput);CopyProjectReferencesToPackage</TargetsForTfmSpecificBuildOutput>
对我来说很有效
以上是关于NuGet - NU5131: nuspec文件中声明的引用没有被打包。的主要内容,如果未能解决你的问题,请参考以下文章
引用的库使用 VS 2017 在 Nuspec 中注册为其他 nuget 引用