Nuget包以包含其他文件夹

时间:2014-06-05 09:37:45

标签: msbuild teamcity nuget octopus-deploy

我正在使用teamcity和章鱼部署我的软件包。我正在使用teamcity创建包,然后使用Octopus部署到不同的环境。我有一个Resources文件夹,需要作为teamcity中的单独步骤进行复制。现在我希望该文件夹包含在包中,以便我可以将该包部署到其他域上的远程服务器。我已经定义了以下文件,将resources文件夹包含在主项目的内容文件夹中。但是发生的事情是它只是在目的地中创建一个文件夹,但是不要在项目中复制其他文件。请指导,因为我想要的是在包中包含资源文件夹以及我的发布网站文件。我只是想将资源文件夹作为包的一部分。请指导

 <?xml version="1.0" ?>
<package xmlns="http://schemas.microsoft.com/packaging/2010/07/nuspec.xsd">
 <metadata>
<id>Services</id>
<version>1.0.0.0</version>
<authors></authors>
<owners></owners>
<requireLicenseAcceptance>false</requireLicenseAcceptance>
<description>Services.nuspec build package</description>
<releaseNotes />
 </metadata>
 <files>
  <file src="..\Resources\**\*.*" target="Content\Resources" />
</files>
</package>

使用上述代码创建包后的包内容: -

 . _rels
 . package
 . content\resources 
 . [content_type
 . Services.nuspec

1 个答案:

答案 0 :(得分:0)

如果您正在使用OctoPack ,则会出现此行为。引用documentation on GitHub

  

如果<files>部分存在,则OctoPack不会尝试自动将任何额外文件添加到您的包中,因此您需要明确说明要包含哪些文件。

如果你走这条路线,你需要指定你想要包含在nuspec的<files>部分中的所有其他文件。

如果您未使用OctoPack ,则适用类似的规则。见documentation on nuget.org

  

如果您遵循创建包中描述的约定,则不必在.nuspec文件中显式指定文件列表。请注意,如果指定任何文件,则会忽略约定,并且只有.nuspec文件中列出的文件包含在包中。

<强>更新

我曾经使用的一种混合方法是使用MSBuild Publish目标来构建&amp;将网站发布到本地文件夹,(过滤掉所有编译时文件,如.cs源代码),放入其他文件,然后只需包含一个<file src="**/*.*" />来打包根发布文件夹下的所有内容。需要对根路径/ nuget.exe进行一些自定义,但这可能会使整个过程变得更整洁,维护更少。

Useful information here可能会帮助您入门。