web-dev-qa-db-ja.com

Visual Studio 2017csprojコアファイルの除外

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ファイルが公開フォルダーにコピーされます。私は運が悪かった別の注文を試しました。

特定のファイルを公開から除外するにはどうすればよいですか?

16
Marcin

短い答え:代わりに次のスニペットを使用してください:

<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にすでに含まれているアイテムの メタデータ値 (CopyToPublishDirectory設定など)を変更する場合は、「含める」ではなく「更新」を使用する必要があります。

内部で何が起こっているかを確認するために、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-L4

26
natemcmaster