TeamCity使用OctoPack - 不排除多余文件

时间:2014-06-10 23:34:44

标签: teamcity nuget nuget-package octopus-deploy

我正在考虑简化从我的构建系统中出来的nuget软件包,并且我仍然坚持如何只打包所需的文件。

我有几个配置共享Root VCS checkout。我有一个使用单元测试运行调试版本的配置。我还有一个发布版本的发布配置,然后这个配置也使用TeamCity OctoPack插件来创建nuget包。

我想要实现的是构建不包含*.pdb*.xml文档文件的nuget包,因为这些文档不是发布部署所必需的。

我在OD网站上浏览了这个页面:

http://docs.octopusdeploy.com/display/OD/Using+OctoPack

根据这个页面,OctoPack默认只应打包所需的文件。我并不完全清楚如何或者需要做些什么来解决这个问题,因为它似乎没有按照描述的那样工作。

似乎一个解决方案是为我期待的项目提供一个nuspec文件,但我也想知道在我离开之前是否有一些我失踪的东西路由。

我还有一些在后期构建事件中复制的MEF插件,这些插件并不包含在nuget包中,实际上它们是应用程序运行所必需的。我想我需要明确使用nuspec文件,但想确认一下。

达到我需要的最简单方法是什么?

2 个答案:

答案 0 :(得分:1)

假设您正在运行更高版本的OctoPack,您可以在发布版本中设置一个系统参数system.DebugType = None,该参数将传递给OctoPack构建脚本并阻止创建PDB 。

这简单地覆盖了csproj msbuild文件中定义的设置(假设为C#),因此您可以在任何想要阻止在构建配置级别(而不仅仅是OctoPack)创建PDB的地方使用它。我通常更喜欢这种方法,因为它可以防止开发人员在项目文件中更改构建中的副作用。

至于xml文件,我还没有尝试过这个,但你可以尝试类似的方法并创建一个系统参数system.DocumentationFile = ""来清空输出。

答案 1 :(得分:0)

如果您确实要确保删除了这些文件,可以通过以下几种方法执行此操作。将部署过程修改为:

  1. 执行您自己的自定义PowerShell脚本,删除文件
  2. 将Octopus Library中的脚本模块包含在其中。查看File System - Clean Directory
  3. 中的Octopus Library