创建一个使用所有默认行为但添加一个附加文件的nuspec文件

时间:2015-01-15 18:32:22

标签: nuget-package nuget-spec

我希望有一个nuspec文件自动读取packages.config中的所有信息,依此类推,构建所有依赖项,但也只包含一个附加文件。

有办法做到这一点吗?

例如,这是一个nuspec文件,几乎可以执行我想要的操作:

<?xml version="1.0" encoding="utf-8"?>
<package xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
  <metadata>
    <id>My.Project</id>
    <version>1.0.0.0</version>
    <owners>Me</owners>
    <authors>Me</authors>
    <requireLicenseAcceptance>false</requireLicenseAcceptance>
    <title>My.Project</title>
    <description>My.Project</description>
    <frameworkAssemblies />
    <copyright>Copyright ©  2015</copyright>
    <tags></tags>    
  </metadata>
</package>

如果我的项目引用了十个nuget包,那么当我将包打包在一起时,上面的nuspec文件将检测到并将它们添加为依赖项。

但是,当我添加files元素时,所有与我的其他nuget依赖项的自动链接都会停止:

<?xml version="1.0" encoding="utf-8"?>
<package xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
  <metadata>
    <id>My.Project</id>
    <version>1.0.0.0</version>
    <owners>Me</owners>
    <authors>Me</authors>
    <requireLicenseAcceptance>false</requireLicenseAcceptance>
    <title>My.Project</title>
    <description>My.Project</description>
    <frameworkAssemblies />
    <copyright>Copyright ©  2015</copyright>
    <tags></tags>    
  </metadata>
  <files>
    <file src="myfile.dll" target="lib\net45" />
  </files>
</package>

如果没有自动链接,我实际上必须为我的项目维护所有依赖项的两个副本:一个在csproj文件中,一个在这里。

必须有办法做到这一点?!我想通过nuspec在我的包中添加一个额外的文件。

2 个答案:

答案 0 :(得分:0)

如果您只需要在项目包中打包一个附加文件,只需将该文件添加到项目中并将其构建操作设置为内容。 它将被添加到Content目录下的包中,并且安装将添加到使用项目中。

答案 1 :(得分:0)

您使用的是Octopus Deploy吗?

如果使用Octopus Deploy,可以通过添加/p:OctoPackEnforceAddingFiles=true来解决这个问题,该问题告诉OctoPack将常规文件包含在<files>..</files>

中定义的内容之上

阅读本文以获取更多信息

https://octopus.com/docs/packaging-applications/nuget-packages/using-octopack/octopack-to-include-buildevent-files