Asp.net-Core

<EnableDefaultContentItems> 啟用哪些內容項?

  • May 24, 2021

我有一個 asp.net core 1.1 應用程序。

它的 .csproj 有一個條目

&lt;EnableDefaultContentItems&gt;false&lt;/EnableDefaultContentItems&gt;

當我線上搜尋此內容時,我發現的只是有關重複內容錯誤的問題。這裡啟用(或者更確切地說,未啟用)的預設項目是*什麼?*而且,微軟是否在某個我應該知道的地方記錄了這一點?

這是新項目格式的一部分,特別Microsoft.NET.Sdk.Web是用於 ASP.NET Core 項目的新項目 SDK。

預設情況下,EnableDefaultContentItems設置true。然後 SDK 的 MSBuild 屬性項目包含以下內容

&lt;ItemGroup Condition=" '$(EnableDefaultItems)' == 'true' And '$(EnableDefaultContentItems)' == 'true' "&gt;
 &lt;!-- Publish everything under wwwroot, all JSON files, all web.config files and all Razor files --&gt;
 &lt;Content Include="wwwroot/**" CopyToPublishDirectory="PreserveNewest" Exclude="$(DefaultItemExcludes);$(DefaultExcludesInProjectFolder)" /&gt;
 &lt;Content Include="**/web.config" CopyToPublishDirectory="PreserveNewest" Exclude="$(DefaultItemExcludes);$(DefaultExcludesInProjectFolder);wwwroot/**" /&gt;
 &lt;Content Include="**/*.cshtml" CopyToPublishDirectory="PreserveNewest" Exclude="$(DefaultItemExcludes);$(DefaultExcludesInProjectFolder);wwwroot/**" /&gt;
 &lt;Content Include="**/*.json" CopyToPublishDirectory="PreserveNewest" Exclude="$(DefaultItemExcludes);$(DefaultExcludesInProjectFolder);wwwroot/**" /&gt;

 &lt;!-- Set CopyToPublishDirectory to Never for items under AppDesignerFolder ("Properties", by default) to avoid publishing launchSettings.json --&gt;
 &lt;Content Update="$(AppDesignerFolder)/**" CopyToPublishDirectory="Never" Condition="'$(AppDesignerFolder)' != ''"/&gt;

 &lt;!-- Remove Content items from other item types (in a way that CPS understands) --&gt;
 &lt;None Remove="wwwroot/**;**/*.json;**/web.config;**/*.cshtml" /&gt;
 &lt;Compile Remove="wwwroot/**" /&gt;
 &lt;EmbeddedResource Remove="wwwroot/**" /&gt;

 &lt;!-- Keep track of the default content items for later to distinguish them from newly generated content items --&gt;
 &lt;_ContentIncludedByDefault Include="@(Content)" /&gt;

&lt;/ItemGroup&gt;

所以基本上,EnableDefaultContentItems使項目自動:

  • 發布wwwroot/, anyweb.config和 all.cshtml.jsonfiles 中的所有文件。
  • 忽略Properties/發佈時的文件夾
  • 防止那些已發布的內容文件被編譯或嵌入。

因此,如果您正在使用該wwwroot文件夾並且沒有更改其名稱,那麼建議您只保留預設值,以避免在您的項目中手動指定所有這些異常。這些只是常見的預設設置,可讓您快速執行項目,而不會妨礙您使用 MSBuild。

當然,僅僅因為這些是預設值,您以後仍然可以為各個路徑設置更明確的規則,而不必禁用預設內容項。

引用自:https://stackoverflow.com/questions/46983930