我们正在使用 TFS 构建步骤来创建 nuget 包。所以 TFS 自动完成这项工作,我的意思是,它首先创建 nuspec 文件,然后创建 nupkg。
因此,这个包包含我的 xml 设置,但是当我将此 nuget 包添加到项目中时,它不会复制到 debug/relase 文件夹中。但我看到内容已添加到项目中,问题只是这些内容文件没有复制到构建文件夹中。
我看到有一些手动创建 nuget 包的解决方案。 (我也尝试过这些,但对我不起作用)TFS 自己创建所有东西。
嗯,我的内容的属性就是这样的
所以我无法解决这个问题。我使用 NuGet 3.3。
packages.config 项目的 nuspec 的 contentFiles 部分,它仅将文件添加到项目中。如果要更改文件的 CopytoOutPut 属性,则需要使用 install.ps1 脚本。你可以参考这个讨论。
以下线程提供了 install.ps1 的一些代码片段。
因此,当 TFS 创建此包时,您需要将 install.ps1 脚本添加到包的工具文件夹中。
当我将此 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 文件夹中