NuGet - 无法将.nuspec文件本身复制到目标项目

时间:2014-07-26 11:48:44

标签: nuget nuspec

我有一个类似下面的.nuspec文件。在文件部分,我试图复制.nuspec文件本身,所以当安装包时,它会在" Components / tst"目标项目中的目录(因此.nuspec中包含的依赖项信息在目标项目中可用):

<?xml version="1.0" encoding="utf-8"?>
<package xmlns="http://schemas.microsoft.com/packaging/2010/07/nuspec.xsd">
  <metadata>
    ...
  </metadata>
  <files>
    <file src=".\tst.nuspec" target="content\Components\tst\tst.nuspec" />

    <file src="Component\script.js" target="content\Components\tst\script.js" />
    <file src="Component\style.less" target="content\Components\tst\style.less" />
  </files>
</package>

问题在于,当我创建.nupkg文件(使用nuget pack)时,tst.nuspec文件不会复制到包内的content \ Components \ tst \ tst.dependencies文件中。当我安装软件包时,tst.nuspec文件不会复制到目标项目。

文件部分(script.js和style.less)中的其他文件被正确复制。

有什么方法可以说服nuget pack复制.nuspec文件本身以及其他文件? 如果没有,那么将.nuspec文件复制到目标项目的最佳方法是什么?

1 个答案:

答案 0 :(得分:1)

使用NuGet.exe pack Your.nuspec时,不支持查看NuGet源代码。打包时会过滤掉所有.nuspec文件。

    internal void ExcludeFiles(ICollection<IPackageFile> packageFiles)
    {
        // Always exclude the nuspec file
        // Review: This exclusion should be done by the package builder because it knows which file would collide with the auto-generated
        // manifest file.
        var wildCards = _excludes.Concat(new[] { @"**\*" + Constants.ManifestExtension });

因此,您可以修改NuGet的源代码,也可以在NuGet手动或以编程方式生成.nupkg文件(即zip文件)后添加.nuspec文件。