我为我的解决方案创建了一个 nuspec 文件。该解决方案有几个空文件夹。
我已经从 https://docs.nuget.org/consume/command-line-reference 下载了最新的 nuget.exe
但是,当我运行 nuget pack 命令时,不包含空文件夹。查看 pack 命令的文档,我解释了由于此标志默认包含空文件夹的事实:
ExcludeEmptyDirectories:在构建包时防止包含空目录。
不幸的是,我无法让 pack 命令包含我的空文件夹。
我的文件结构类似于
根
Folder1 和 Folder2 中有内容文件,但 Folder3 是空的
我的 nuspec 文件定义如下:
<?xml version="1.0"?>
<package xmlns="http://schemas.microsoft.com/packaging/2010/07/nuspec.xsd">
<metadata>
<id>Package_7.2_140526</id>
<version>7.2.140526</version>
<title>Package 7.2 rev 140526</title>
<authors>My Company</authors>
<owners>My Company</owners>
<requireLicenseAcceptance>false</requireLicenseAcceptance>
<description>A vanilla website</description>
</metadata>
</package>
我没有包含单个文件,因为我希望 nuget 包包含所有内容。虽然我的例子只有 3 个文件夹,但远远不止这些。
这是我从命令行运行的 nuget 命令
nuget pack "c:\Projects\Package 7.2 rev 140526\Packagee 7.2 140526.nuspec" -OutputDirectory c:\Projects -NoPackageAnalysis
当那不起作用时,我尝试使用 -ExcludeEmptyDirectories 标志以防万一
nuget pack "c:\Projects\Package 7.2 rev 140526\Packagee 7.2 140526.nuspec" -OutputDirectory c:\Projects -NoPackageAnalysis -ExcludeEmptyDirectories
但它仍然不会包含空文件夹。
需要做什么才能让 nuget pack 命令包含空文件夹?
更新
我使用 Nuget Package Explorer 将空文件夹添加到解决方案中,然后查看修改后的 nuspec 文件。似乎在 nuget 中包含空文件夹的唯一方法是将文件条目作为
<file src="folder3\_._" target="folder3\_._" />
然后有一个postdeploy.ps1文件删除所有名为“_._”的文件
所以看起来总是要指定文件。
附言。我用以下结构对其进行了测试
\Folder3\Folder4。
如果文件夹 4 为空,则不会创建文件夹 3 和文件夹 4,除非您包含“_._”文件
但是如果有一种方法可以包含空文件夹而不必求助于 _._ 文件然后想知道,特别是如果空白文件夹是嵌套的,因为它很容易被排除
最佳答案
是的,这似乎是一个问题,它是否已解决以及如何解决都处于阴暗状态。 Nuget Github 中有一些关于此的问题,但我无法清楚地了解状态。
总结是 nuget 'pack' 命令有一个名为 -ExcludeEmptyDirectories 的参数,它实际上应该与它所调用的相反,但它在我可以测试的情况下都不起作用。
看
https://github.com/NuGet/Home/issues/3009
关于NuGet.exe 包不包括空文件夹,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35898300/