OctoPack什么时候创建nuspec文件?

Stu*_*ser 4 nuspec octopus-deploy octopack

使用OctoPack提到

.nu​​spec文件描述了NuGet包的内容.如果您没有提供,OctoPack会通过猜测项目中的某些设置自动创建一个.

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

在什么时候生成.nuspec?如果没有提供覆盖.nuspec,它是否生成并保存或是否在运行中?

osi*_*2is 7

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

C:\temp\nuget.exe spec c:\path-to-project\solution\project\myproj.csproj
Run Code Online (Sandbox Code Playgroud)

这将在文件夹中创建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

就像我之前说的那样,最好在您的解决方案/项目中创建NuSpec文件.对于不是Visual Studio中的Web应用程序的项目,在为不同项目(服务,数据库脚本,MSI,SSRS等等)优化包时,还有一些工作要做.