首页 > 解决方案 > 使用 nuget 交付临时构建时资产

问题描述

使用 nuget 交付临时构建时资产的正确方法是什么?

我正在制作一个带有单个文件的 nuget 包,依赖项目在构建阶段需要这些文件。obj\$(Configuration)在继续构建的其余部分之前,我希望将文件的内容复制到依赖项目内的文件夹中。当然,该文件夹是临时的,所以如果被清除obj,我希望我的文件作为下一次构建的一部分再次复制到那里。obj

我尝试了这里contentFiles描述的方法。这负责将我的文件打包到 nupkg 文件中,但我无法对其进行设置,以便将我的文件交付(并重新交付)到.obj\$(Configuration)

标签: nuget

解决方案


您正在寻找NuGet 的 MSBuild 可扩展性。不幸的是,这意味着如果您还不了解 MSBuild,则需要了解一些有关 MSBuild 的知识。我建议运行msbuild -blor dotnet build -bl,它将创建一个 msbuild.binlog 文件,您可以使用msbuild 结构化日志查看器查看该文件。

一种选择是让目标在适当的时间在中间输出目录中创建文件(可能需要使用 BeforeTargets)。您可以使用 Inputs 和 Outputs 属性让 msbuild 进行增量构建检查并在不需要时跳过复制,这可能会使构建速度更快一些。

但是,除非文件具有动态内容,否则复制文件是一种浪费。它只是将作为项目包含在构建过​​程的另一部分中。因此,如果它是静态内容,您可以从包的提取目录中在目标文件中创建相关项目,然后就像将其复制到中间输出目录一样好,而不会浪费时间和重复磁盘空间。


推荐阅读