Visual studio 2015 我能';无法使MSBuild忽略整个文件夹

Visual studio 2015 我能';无法使MSBuild忽略整个文件夹,visual-studio-2015,msbuild,Visual Studio 2015,Msbuild,我刚开始使用MSBuild,不管出于什么原因,它似乎比它应该的更复杂。我试图让构建过程完全忽略“node_modules”文件夹。我试过各种方法。以下是我的最新消息: <ItemGroup> <DefaultExclude Include="node_modules\*.*" /> <!-- tried **\node_modules\** --> <!-- tried **node_modules** --> <!-- tr

我刚开始使用MSBuild,不管出于什么原因,它似乎比它应该的更复杂。我试图让构建过程完全忽略“node_modules”文件夹。我试过各种方法。以下是我的最新消息:

<ItemGroup>
  <DefaultExclude Include="node_modules\*.*" />
  <!-- tried **\node_modules\** -->
  <!-- tried **node_modules** -->
  <!-- tried node_modules\** -->
  <!-- tried several others combinations -->
</ItemGroup>

<ItemGroup>     
  <InstallInclude Include="**\*.ascx" Exclude="packages\**;@(DefaultExclude)" />
  <InstallInclude Include="**\*.asmx" Exclude="packages\**;@(DefaultExclude)" />
  <InstallInclude Include="**\*.css" Exclude="packages\**;@(DefaultExclude)" />
  <InstallInclude Include="**\*.html" Exclude="packages\**;@(DefaultExclude)" />      
</ItemGroup>

<Copy SourceFiles="@(InstallInclude)" DestinationFolder="$(MSBuildProjectDirectory)\ResourcesZip\%(RecursiveDir)" />
<!-- this resources directory ends up with all the node_modules in it -->

不用说,构建过程需要很长时间,有时会中断(不一致)


MSBuild最初是一个令人困惑的噩梦

这里的问题是,您正在根据node\u modules文件夹展开项目。MSbuild将收集所有项的元数据,这正是它运行缓慢的原因。为确保此过程有效,请改用属性-类似于:


软件包\**
$(默认项目除外)**\节点_模块\**;节点单元\**
$(默认项目除外)**\jspm_软件包\**;jspm_包\**
$(默认项目除外)**\鲍尔_组件\**;鲍尔元件\**

\**
结尾的排除模式将阻止msbuild甚至枚举文件夹。MSBuild 15(VS 2017的一部分)可能需要获得完整的性能优势。

您可以始终在有问题的文件夹中设置隐藏属性,例如
节点\u模块
,ASPNET\u编译器将跳过它。我已经用grunt和typescript对它进行了测试,它可以很好地处理隐藏文件夹。

而且应该可以工作,这取决于node_modules文件夹和.csproj的结构级别。我已经用你的代码对它进行了测试,它对我有效。在使用最新配置进行测试之前,是否清除了目标文件夹中的文件?重建项目时,VS不会自动清除它。如果您已经清除了,请在解决方案资源管理器中与我共享结构级别好吗?很难说确切的问题,因为您没有显示目录结构。。。排除需要精确的路径匹配,请参见例如。否则,请使用类似于
条件='%(RelativeDir)!='节点_模块‘
<PropertyGroup>
  <DefaultItemExcludes>packages\**</DefaultItemExcludes>    
  <DefaultItemExcludes>$(DefaultItemExcludes);**\node_modules\**;node_modules\**</DefaultItemExcludes>
  <DefaultItemExcludes>$(DefaultItemExcludes);**\jspm_packages\**;jspm_packages\**</DefaultItemExcludes>
  <DefaultItemExcludes>$(DefaultItemExcludes);**\bower_components\**;bower_components\**</DefaultItemExcludes>
</PropertyGroup>

<ItemGroup>     
  <InstallInclude Include="**\*.ascx" Exclude="$(DefaultItemExcludes)" />
  <InstallInclude Include="**\*.asmx" Exclude="$(DefaultItemExcludes)" />
  <InstallInclude Include="**\*.css" Exclude="$(DefaultItemExcludes)" />
  <InstallInclude Include="**\*.html" Exclude="$(DefaultItemExcludes)" />      
</ItemGroup>