8

我有一个包含 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

然而它永远不会出现。我怎么才能得到它?

4

2 回答 2

6

在这里发布弗拉德的答案

如果您想从所有包中复制 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>
于 2020-12-23T23:09:33.383 回答
2

我找到了一种解决方案:请在https://snede.net/add-nuget-package-xml-documentation-to-swagger/?unapproved=168&moderation-hash=14dbe7e7ca3d8affb6ace2bfdb7ff581找到它

这实际上是将文件从nuget包复制到out dir或publish dir的问题。

只需在运行构建或发布后修改 csproj 文件以从包的路径复制文件。

于 2019-09-20T06:37:03.257 回答