Nuget 包不复制内容(XML 文件)

问题描述 投票:0回答:2

我们正在使用 TFS 构建步骤来创建 nuget 包。所以 TFS 自动完成这项工作,我的意思是,它首先创建 nuspec 文件,然后创建 nupkg。

因此,这个包包含我的 xml 设置,但是当我将此 nuget 包添加到项目中时,它不会复制到 debug/relase 文件夹中。但我看到内容已添加到项目中,问题只是这些内容文件没有复制到构建文件夹中。

我看到有一些手动创建 nuget 包的解决方案。 (我也尝试过这些,但对我不起作用)TFS 自己创建所有东西。

嗯,我的内容的属性就是这样的

所以我无法解决这个问题。我使用 NuGet 3.3。

tfs nuget-package nuget-server
2个回答
1
投票

packages.config 项目的 nuspec 的 contentFiles 部分,它仅将文件添加到项目中。如果要更改文件的 CopytoOutPut 属性,则需要使用 install.ps1 脚本。你可以参考这个讨论

以下线程提供了 install.ps1 的一些代码片段。

在 nuget 包中将内容文件设置为“复制本地:始终”

因此,当 TFS 创建此包时,您需要将 install.ps1 脚本添加到包的工具文件夹中。


0
投票

当我将此 nuget 包添加到项目中时,它不会复制到 debug/relase 文件夹中

我在类似的问题中看到了这个解决方案或其变体。它对我使用 .Net 8 有用。

将以下代码添加到正在使用 nuget 包(其中包含 xml 文档)的项目的

csproj
文件中

<Target Name="_ResolveCopyLocalNuGetPackageXmls" AfterTargets="ResolveReferences">
  <ItemGroup>
    <ReferenceCopyLocalPaths Include="@(ReferenceCopyLocalPaths->'%(RootDir)%(Directory)%(Filename).xml')" Condition="Exists('%(RootDir)%(Directory)%(Filename).xml')" />
  </ItemGroup>
</Target>

请注意,它将复制所有相应的 xml 文件(如果存在)。如果你不想要这个,你可能不得不尝试这个条件。

另请注意,您可能还必须将其添加到某些测试项目文件中。就我而言,我正在使用 swagger 的文档标头,并且所有集成测试都失败了,因为我需要的 xml 文件不在测试项目的 bin 文件夹中

© www.soinside.com 2019 - 2024. All rights reserved.