【问题标题】:What content items does <EnableDefaultContentItems> enable?<EnableDefaultContentItems> 启用哪些内容项?
【发布时间】:2017-10-27 21:55:47
【问题描述】:

我有一个 asp.net core 1.1 应用程序。

它的 .csproj 有一个条目

<EnableDefaultContentItems>false</EnableDefaultContentItems>

当我在线搜索此内容时,我发现的只是有关重复内容错误的问题。这里启用(或者更确切地说,未启用)的默认项目是什么?而且,Microsoft 是否在某个我应该知道的地方记录了这一点?

【问题讨论】:

    标签: asp.net-core msbuild


    【解决方案1】:

    这是新项目格式的一部分,尤其是用于 ASP.NET Core 项目的新 Microsoft.NET.Sdk.Web 项目 SDK。

    默认情况下,EnableDefaultContentItemsset to true。 SDK的MSBuild属性项目然后contains the following:

    <ItemGroup Condition=" '$(EnableDefaultItems)' == 'true' And '$(EnableDefaultContentItems)' == 'true' ">
      <!-- Publish everything under wwwroot, all JSON files, all web.config files and all Razor files -->
      <Content Include="wwwroot/**" CopyToPublishDirectory="PreserveNewest" Exclude="$(DefaultItemExcludes);$(DefaultExcludesInProjectFolder)" />
      <Content Include="**/web.config" CopyToPublishDirectory="PreserveNewest" Exclude="$(DefaultItemExcludes);$(DefaultExcludesInProjectFolder);wwwroot/**" />
      <Content Include="**/*.cshtml" CopyToPublishDirectory="PreserveNewest" Exclude="$(DefaultItemExcludes);$(DefaultExcludesInProjectFolder);wwwroot/**" />
      <Content Include="**/*.json" CopyToPublishDirectory="PreserveNewest" Exclude="$(DefaultItemExcludes);$(DefaultExcludesInProjectFolder);wwwroot/**" />
    
      <!-- Set CopyToPublishDirectory to Never for items under AppDesignerFolder ("Properties", by default) to avoid publishing launchSettings.json -->
      <Content Update="$(AppDesignerFolder)/**" CopyToPublishDirectory="Never" Condition="'$(AppDesignerFolder)' != ''"/>
    
      <!-- Remove Content items from other item types (in a way that CPS understands) -->
      <None Remove="wwwroot/**;**/*.json;**/web.config;**/*.cshtml" />
      <Compile Remove="wwwroot/**" />
      <EmbeddedResource Remove="wwwroot/**" />
    
      <!-- Keep track of the default content items for later to distinguish them from newly generated content items -->
      <_ContentIncludedByDefault Include="@(Content)" />
    
    </ItemGroup>
    

    所以基本上,EnableDefaultContentItems 会自动生成项目:

    • 发布wwwroot/、任何web.config 以及所有.cshtml.json 文件中的所有文件。
    • 在发布时忽略 Properties/ 文件夹
    • 防止那些已发布的内容文件被编译或嵌入。

    因此,如果您正在使用 wwwroot 文件夹并且没有更改其名称,那么建议您保留默认值以避免在您的项目中手动指定所有这些异常。这些只是常见的默认设置,可让您快速运行项目,而不会妨碍您使用 MSBuild。

    当然,仅仅因为这些是默认值,您以后仍然可以为各个路径制定更明确的规则,而不必禁用默认内容项。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2016-09-13
      • 1970-01-01
      • 1970-01-01
      • 2013-11-20
      • 1970-01-01
      • 1970-01-01
      • 2015-11-30
      • 1970-01-01
      相关资源
      最近更新 更多