web-dev-qa-db-ja.com

.NET Core(非ASP.NET Core)プロジェクトのVS2017 Solution Explorerでファイルをネストできますか?

「古い学校」のMSBuildプロジェクト-VS2017のWindows Formsでも使用されているように-csprojファイルのDependentUponアイテムを介してファイルを「ネスト」できます。

これを使用して、野田タイムのユニットテストをグループ化しました。

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

これにより、簡単にナビゲートできるテストになりました。

Nested tests

.NET Coreのproject.jsonに移行すると、この機能が意図的に「失われ」ましたが、MSBuildに変換すると機能が戻ることを期待していました。ただし、.NET Core SDK(ルート要素<Project Sdk="Microsoft.NET.Sdk">)に基づくMSBuildプロジェクトは、ItemGroupが同じもので手動で追加された場合でも、Visual Studio 2017で同じ処理を取得していないようです「古い学校」プロジェクトとしての要素。

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

71
Jon Skeet

私は私のMicrosoft.NET.Sdkスタイルのプロジェクトは、次のようなものを使用します。

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

ここでのコツは、Updateの代わりにIncludeを使用することです。これは、暗黙的なアイテムがメインプロジェクトの前にインポートされるpropsファイルから取得されるためです。追加のIncludeは、既に含まれているファイルには影響しませんが、Updateを使用して変更できます。

84
Matthew King

Visual Studio 2019では、.NET Core 2.2 <Project Sdk="Microsoft.NET.Sdk">うまくネストされたappsettings.json/appsettings.Development.jsonファイルが必要なプロジェクト。<Project Sdk="Microsoft.NET.Sdk.Web">プロジェクト。

.CSPROJに追加しなければならなかったものは次のとおりです。

  <ItemGroup>
    <Content Include="appsettings.json">
      <CopyToOutputDirectory>Always</CopyToOutputDirectory>
    </Content>
    <Content Include="appsettings.Development.json">
      <DependentUpon>appsettings.json</DependentUpon>
      <CopyToOutputDirectory>Always</CopyToOutputDirectory>
    </Content>
  </ItemGroup>

その後、ソリューションエクスプローラーで変更を有効にするには、プロジェクトをアンロード/再ロードする必要がありました。これらのファイルは常に出力ディレクトリにコピーされるように設定していることに注意してください。

5

。netstandardx.xを使用する場合、 NestedIn は使用できません。動いていない。

あなたは.csprojで手動でそれを行うことができます

<ItemGroup><Compile Include="BaseClass">ChildClass.cs</Compile></ItemGroup>
2
Batuhan