1. ホーム
  2. msbuild

[解決済み] VS2017 Solution Explorer for .NET Core (non-ASP.NET Core) プロジェクトでファイルのネストは可能ですか?

2023-02-24 02:14:09

質問

古い形式の MSBuild プロジェクト (たとえば VS2017 の Windows Forms で現在も使用されている) では、ファイルは DependentUpon 項目でネストすることができます。

これを利用して、Noda Timeでユニットテストをグループ化するなどしていました。

<Compile Include="LocalDateTest.PeriodArithmetic.cs">
  <DependentUpon>LocalDateTest.cs</DependentUpon>
</Compile>

それが、ナビゲートしやすいテストにつながったのです。

に移行する際、私は故意にこの機能を失いました。 project.json に移行したときにこの機能が失われたことを承知で、MSBuild に変換するときにこの機能が戻ってくることを期待していました。しかし、.NET Core SDK に基づく MSBuild プロジェクト (ルート要素 <Project Sdk="Microsoft.NET.Sdk"> )があっても、Visual Studio 2017 では同じ扱いを受けません。 ItemGroup が "old school" プロジェクトと同じ要素で手動で追加されています。

ASP.NET Core プロジェクトは、最小化された CSS と Javascript の自動ネストを受け取りますが、それを .NET Core ライブラリ プロジェクトで C# に適用する方法は明確ではありません。

どのように解決するのですか?

私はそれが私の Microsoft.NET.Sdk -スタイルのプロジェクトで、次のようなものを使って動作させています。

<ItemGroup>
  <Compile Update="LocalDateTest.*.cs">
    <DependentUpon>LocalDateTest.cs</DependentUpon>
  </Compile>
</ItemGroup>

ここでのトリックは Update の代わりに Include . これは、暗黙のアイテムが、メインプロジェクトの前にインポートされるプロップスファイルから来るからです。追加の Include を追加しても、すでにインクルードされているファイルには影響しませんが、それらは Update .