OctoPack 何时创建 nuspec 文件?

When does OctoPack create the nuspec file?

Using OctoPack提到

A .nuspec file describes the contents of your NuGet package. OctoPack automatically creates one if you haven't provided one, by guessing some of the settings from your project.

我已经 运行 msbuild 设置了 /p:RunOctoPack=true 标志,并希望在项目目录中看到 .nuspec 文件,但它不在项目目录或输出目录中在 /bin.

.nuspec 是在什么时候生成的?如果未提供覆盖 .nuspec,它是生成并保存还是即时生成?

通常最好在安装了 OctoPack 的项目的根目录中创建 NuSpec 文件。要从命令行创建 NuSpec 文件,只需使用 nuget.exe:

C:\temp\nuget.exe spec c:\path-to-project\solution\project\myproj.csproj

这将在文件夹中创建一个 myproj.csproj.nuspec 文件。您可以随心所欲地编辑模板。确保在 Visual Studio 中添加 NuSpec,这样当 TFS(或任何你使用的 CI)进行构建时,NuSpec 被复制,当 OctoPack 被触发时,NuSpec 已经存在。

也就是说,如果 OctoPack 找不到它,它会即时生成一个 NuSpec。您可以在 GitHub 查看源代码(第 234 行定义了方法 GetOrCreateNuSpecFile()):

https://github.com/OctopusDeploy/OctoPack/blob/4b55bf0baa4d96cb7c2093cb234babc19a7d66f4/source/OctoPack.Tasks/CreateOctoPackPackage.cs#L234

正如我之前所说,最好在 solution/project 中创建 NuSpec 文件。对于 Visual Studio 中不是 Web 应用程序的项目,需要做一些工作来优化不同项目(服务、数据库脚本、MSI、SSRS 等)的包

对我来说,它是在这个目录中自动生成的 D:\TeamCity\buildAgent\work\a2ef8561a97cb751\obj\octopacking\MyProject.nuspec