如何从.NET Core / Standard项目中排除文件/文件夹?

时间:2017-04-02 21:37:09

标签: .net msbuild .net-core visual-studio-2017 .net-standard

在.NET Core和.NET Standard项目中,如果将文件和文件夹放在项目目录中,它们将由Visual Studio自动获取;基本上他们是项目的一部分。

如果我的文件/文件夹不是项目本身的一部分(在代码或内容方面) - 如果没有完全删除它们,我有什么方法可以将它们从项目中排除我可以使用针对完整.NET Framework的项目吗?

3 个答案:

答案 0 :(得分:46)

您还可以在csproj文件中执行一些操作,以确保文件没有被选中:

1)确保没有任何寻找"项目项目"拿起文件:

<PropertyGroup>
  <DefaultItemExcludes>$(DefaultItemExcludes);your_nonproj.file;a\**\*.pattern</DefaultItemExcludes>
</PropertyGroup>

2)明确删除项目:

<ItemGroup>
  <None Remove="hidden.file" />
  <Content Remove="wwwroot\lib\**\*" />
</ItemGroup>

请注意,在大型目录(文件数)上,使用带有folder\**模式的DefaultItemExcludes要快得多,因为msbuild将完全跳过目录。为此使用删除仍然会让msbuild花费相当多的时间来发现文件。

答案 1 :(得分:8)

在Visual Studio中打开项目,然后在解决方案资源管理器中右键单击文件和文件夹。选择Exclude from Project

这正是您针对.NET Framework的项目所做的。

答案 2 :(得分:1)

为完成起见,如果您使用ItemGroup排除文件夹,则:

<ItemGroup>
  <Content Remove="excluded_folder\**" />
  <Compile Remove="excluded_folder\**" />
  <EmbeddedResource Remove="excluded_folder\**" />
  <None Remove="excluded_folder\**" />
</ItemGroup>

因为,我在node_modules文件夹中有一个角度项目,该项目的路径很长,而VS总是抛出异常。而且使用<Content Remove="node_modules\**\*" />无效。