我有一个类似下面的.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文件复制到目标项目的最佳方法是什么?
答案 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文件。