Visual Studio 2017 csproj核心文件排除

Mar*_*cin 16 csproj .net-core asp.net-core visual-studio-2017

我已经将xproj核心项目迁移到了csproj.一切都运行良好,但我仍然遇到发布配置问题.基于文档:https: //docs.microsoft.com/en-us/dotnet/articles/core/tools/project-json-to-csproj我应该能够在发布期间排除文件.

我在f中添加了以下行

<None Include="*.json" CopyToPublishDirectory="Never" />
<None Include="wwwroot\**\*.map;wwwroot\**\*.less;*.pdb" CopyToPublishDirectory="Never" />
<None Include="wwwroot\**\*" CopyToPublishDirectory="PreserveNewest" />
Run Code Online (Sandbox Code Playgroud)

但仍然*.map,.json.less文件复制到发布文件夹.我试过不同的顺序没有运气.

如何从发布中排除某些文件?

nat*_*ter 26

简短回答:使用以下代码段:

<ItemGroup>
  <Content Update="**\*.map;**\*.less;*.json" CopyToPublishDirectory="Never" />
</ItemGroup>
Run Code Online (Sandbox Code Playgroud)

您还可以将这些模式添加到"DefaultItemExcludes"属性中.

<PropertyGroup>
  <DefaultItemExcludes>$(DefaultItemExcludes);**\*.map;**\*.less;*.json</DefaultItemExcludes>
</PropertyGroup>
Run Code Online (Sandbox Code Playgroud)

更长的回答:

Microsoft.NET.Sdk和Microsoft.NET.Sdk.Web包含默认项的设置.这些是项目文件夹中项目的全局,应始终进行编译,嵌入,复制到输出等.有一些设置可以控制它,但它们没有很好地记录.

如果要更改已包含在默认glob中的项目的元数据值(例如CopyToPublishDirectory设置),则必须使用"Update"而不是"Include".

要了解幕后发生的情况,请参阅Microsoft.NET.Sdk和Microsoft.NET.Sdk.Web的默认项目设置.

https://github.com/dotnet/sdk/blob/dev15.1.x/src/Tasks/Microsoft.NET.Build.Tasks/build/Microsoft.NET.Sdk.DefaultItems.props#L19-L27

https://github.com/aspnet/websdk/blob/rel/vs2017rtw/src/Web/Microsoft.NET.Sdk.Web.ProjectSystem.Targets/netstandard1.0/Microsoft.NET.Sdk.Web.ProjectSystem.props# L25-L40