Visual Studio 2017 csproj核心文件排除

时间:2017-03-15 07:08:06

标签: asp.net-core .net-core visual-studio-2017 csproj

我已将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" />

但仍将*.map.json.less文件复制到发布文件夹。我尝试了不同的订单,没有运气。

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

1 个答案:

答案 0 :(得分:26)

简答:请改用以下代码:

<ItemGroup>
  <Content Update="**\*.map;**\*.less;*.json" CopyToPublishDirectory="Never" />
</ItemGroup>

您还可以将这些模式添加到“DefaultItemExcludes”属性中。

<PropertyGroup>
  <DefaultItemExcludes>$(DefaultItemExcludes);**\*.map;**\*.less;*.json</DefaultItemExcludes>
</PropertyGroup>

更长的回答:

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

如果要更改默认glob中已包含的项目的metadata value(例如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

相关问题