2017-05-08 4 views
40

In "old school" MSBuild-Projekten, die z. B. in VS2017 noch von Windows Forms verwendet wurden, konnten Dateien über ein DependentUpon Element in der csproj-Datei "verschachtelt" werden.Können Dateien im VS2017 Solution Explorer für .NET Core-Projekte (nicht ASP.NET Core) verschachtelt werden?

Ich benutzte dies, um Komponententests zusammen in Noda Time, z.

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

die leicht navigierbare Tests führten zu:

Nested tests

I "verloren" wissentlich diese Funktion, wenn auf project.json für .NET-Core bewegen, aber es würde zurückkehren hatte gehofft, wenn zu MSBuild Umwandlung . Es sieht jedoch so aus, als ob MSBuild-Projekte, die auf dem .NET Core SDK basieren (Root-Element <Project Sdk="Microsoft.NET.Sdk">), in Visual Studio 2017 nicht die gleiche Behandlung erhalten, auch wenn ein ItemGroup manuell mit den gleichen Elementen wie im "Old School" -Projekt hinzugefügt wird.

ASP.NET Core-Projekte erhalten automatisches Verschachteln für verkleinerte CSS und Javascript, aber es ist nicht klar, wie man das auf C# in .NET Core-Bibliotheksprojekten anwendet.

Antwort

40

Ich habe es in einem meiner Microsoft.NET.Sdk -Stil Projekten etwas mit ähnlich der folgenden:

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

Der Trick hier ist Update statt Include zu verwenden. Dies liegt daran, dass die impliziten Elemente aus einer Props-Datei stammen, die vor dem Hauptprojekt importiert wird. Eine zusätzliche Include hat keine Auswirkungen auf Dateien, die bereits enthalten sind, aber sie können mit Update geändert werden.

+0

Okay, das ist seltsam - ich bin sicher, dass ich versuchte, das, und es hat nicht funktioniert. Es ist jetzt. Sehr, sehr seltsam. Ah - es ist das "Update" statt "Include". –

+0

Haben Sie versucht [diese Erweiterung] (https://marketplace.visualstudio.com/items?itemName=MadsKristensen.FileNesting)? –

+0

@AlexanderClare: Dieser Link ist kaputt, aber ich denke, ich kenne den, den du meinst - und es hat nicht funktioniert. –

1

Wenn Sie das gleiche Präfix verwenden, verschachtelt es Dateien automatisch.

Beispiel:

AsemblyInfo.cs 
AsemblyInfo.local.cs 
+1

In einem Netstandard-Projekt funktioniert nichts –

Verwandte Themen