有一个非常简单的方法:将隐藏属性设置为要排除的文件夹,然后aspnet_compiler跳过它。
此错误的典型情况是node_modules创建的文件夹npm install
如果npm install从脚本运行,或者从命令行运行,则可以运行attrib命令,运行nmp install后隐藏文件夹:
attrib +H node_modules
如果npm install从msbuild项目运行,则可以添加exec任务,如下所示:
<PropertyGroup>
<HideFolder>attrib +H "$(PackageJsonFolder)\node_modules"</HideFolder>
</PropertyGroup>
<!-- next line is for debugging, remove it when finished -->
<Warning Text="Hide node_modules command: '$(HideFolder)'"/>
<Exec Command="$(HideFolder)">
至少在我的测试中,命令的退出代码attrib始终为零,因此检查它以确定命令是否成功运行是没有意义的。
在前面的msbuild示例中,要隐藏的文件夹是"$(PackageJsonFolder)\node_modules"因为属性PackageJsonFolder是文件所在packages.json文件夹的名称,因此node_modules将在哪里创建。
对于其他情况,您始终可以指定相对于项目位置的文件夹,如下所示:
<HideFolder>attrib +H "$(MSBuildProjectDirectory)\folder\to\hide"</HideFolder>
并使用前面示例中的相同石灰运行命令。