Visual Studio 2017安装NuGet包时跳过Windows内容文件夹,是否为保留名?
是的,"Windows" 确实是 NuGet 的保留文件夹名称
你遇到的问题完全符合 NuGet 的默认行为——"Windows" 属于 NuGet 自动排除的保留目录名,这类目录通常是系统或项目编译相关的常见目录,NuGet 会默认跳过它们,避免和目标项目的自身结构产生冲突,这也是为什么你在 verbose 日志里完全看不到这个文件夹的痕迹。
为什么改名成 "Windowz" 就正常了?
当你把文件夹名改成非保留名称时,它就脱离了 NuGet 的默认排除规则,自然会被正常打包并安装到目标项目中。除了 "Windows",NuGet 默认还会排除像 bin、obj、packages 这类常见的项目目录。
解决方案:强制包含保留目录
如果你确实需要在 NuGet 包中包含名为 "Windows" 的目录,可以通过修改你的 .nuspec 文件,在 <files> 节点里明确指定要包含的文件,覆盖默认排除规则。比如:
<package> <!-- 其他 nuspec 配置 --> <files> <!-- 包含 content 根目录下的 first.cs.pp --> <file src="content/first.cs.pp" target="content" /> <!-- 强制包含 Windows 文件夹下的所有内容 --> <file src="content/Windows/**/*" target="content/Windows" /> </files> </package>
添加这段配置后,重新打包你的 NuGet 包,再安装到 Visual Studio 项目中,"Windows" 文件夹和里面的 second.cs.pp 就会被正常添加到项目里了。
内容的提问来源于stack exchange,提问作者Dan
相关产品推荐
相关产品推荐

