1

我只是在考虑简化从我的构建系统中出来的 nuget 包,而我一直坚持如何只打包所需的文件。

我有几个配置共享一个 Root VCS 结帐。我有一个运行带有单元测试的调试版本的配置。我还有一个发布配置,它执行发布构建,然后此配置还使用 TeamCity OctoPack 插件来创建 nuget 包。

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

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

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

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

似乎一种解决方案是为我要部署的项目提供一个 nuspec 文件,但我也想知道在我沿着这条路线前行之前是否遗漏了一些东西。

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

实现我需要的最简单方法是什么?

4

2 回答 2

1

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

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

至于 xml 文件,我实际上并没有尝试过,但是您可以尝试类似的方法并创建一个系统参数system.DocumentationFile = ""来清除输出。

于 2014-06-10T23:57:33.923 回答
0

如果您真的想确保文件已被删除,有几种方法可以做到这一点。将您的部署过程修改为:

  1. 执行您自己的自定义 PowerShell 脚本以删除文件
  2. 将 Octopus 库中的脚本模块包含到相同的内容中。查看文件系统 -从Octopus 库中清理目录
于 2014-06-10T23:52:20.700 回答