我有一个包含XML文档文件的NuGet包。
packages/MyPackage.1.0.0/lib/net472/MyPackage.xml
但是当我构建项目时,我想将此xml文件包含在输出中。
因此,当我执行:
dotnet MyProj.csproj -c Release
我希望得到:
> ls bin/Release/net472
MyProj.dll
MyPackage.dll
MyPackage.xml
然而它从未出现过,我该如何获得它?
我有一个包含XML文档文件的NuGet包。
packages/MyPackage.1.0.0/lib/net472/MyPackage.xml
但是当我构建项目时,我想将此xml文件包含在输出中。
因此,当我执行:
dotnet MyProj.csproj -c Release
我希望得到:
> ls bin/Release/net472
MyProj.dll
MyPackage.dll
MyPackage.xml
然而它从未出现过,我该如何获得它?
在此发布Vlad的答案。
如果您想从所有软件包中复制xml,这比Snede的方法更好,因为它通用且不需要为每个软件包在路径上指定.NET版本。
<Project>
<!-- ... -->
<ItemGroup>
<PackageReference Include="Example.SomePkg" Version="1.0.0" />
</ItemGroup>
<!-- ... -->
<Import Project="$(MSBuildToolsPath)/Microsoft.CSharp.targets" />
<!-- Add this -->
<Target Name="_ResolveCopyLocalNuGetPkgXmls" AfterTargets="ResolveReferences">
<ItemGroup><!-- Copy XML files from all PackageReferences to output dir -->
<ReferenceCopyLocalPaths Include="@(ReferenceCopyLocalPaths->'%(RootDir)%(Directory)%(Filename).xml')"
Condition="'%(ReferenceCopyLocalPaths.NuGetPackageId)'!='' and Exists('%(RootDir)%(Directory)%(Filename).xml')" />
</ItemGroup>
</Target>
</Project>