【问题标题】:Nuget package to include other foldersNuget 包以包含其他文件夹
【发布时间】:2014-06-05 09:37:44
【问题描述】:

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

 <?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

【问题讨论】:

  • 你有一个额外的 '.'在您的 src 路径中。它应该是 "\.Resources\" 吗?还要检查 .nupkg 文件的内容,看看里面是否有文件。
  • 是的。是我的错。更新了代码。当使用这个 nuspec 创建包时,它只创建了一个内容文件夹,而不是任何其他发布文件。
  • 你在使用 OctoPack 吗?

标签: msbuild teamcity nuget octopus-deploy


【解决方案1】:

如果您使用的是 OctoPack,则会出现这种行为。引用documentation on GitHub

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

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

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

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

更新

我见过的一种混合方法是使用 MSBuild Publish 目标来构建网站并将其发布到本地文件夹(过滤掉所有编译时文件,如 .cs 源),放入其他文件,然后简单地包含一个&lt;file src="**/*.*" /&gt; 来打包根发布文件夹下的所有内容。需要对根路径 / nuget.exe 进行一些自定义,但它可能会使该过程更加整洁,维护工作也稍微少一些。

Useful information here 可以帮助您入门。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2017-11-15
    • 1970-01-01
    • 2021-11-09
    • 2013-10-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多