.NET Core - Wann wird "dotnet new sln" verwendet?

85

Ich bin ein bisschen verwirrt - die meisten .NET Core-Tutorials, die ich gelesen habe, haben "dotnet new sln" nicht erwähnt - sie erstellen die Projekte immer nur separat ohne Lösungsdatei, um sie miteinander zu verknüpfen.

  1. Ist "dotnet new sln" ein neuer Befehl?

  2. Wann soll ich das benutzen? Welche Vorteile bringt es mir, eine SLN-Datei zu erstellen, anstatt nur Projektdateien zu haben? Ist es hauptsächlich zum Öffnen in Visual Studio? Ich verwende Visual Studio Code für Mac, daher ist er möglicherweise nicht anwendbar.

Ich habe "dotnet new sln" gegoogelt und die Ergebnisse sind sehr minimal.

AndyNZ
quelle
Welche Version von verwenden dotnetSie über die Befehlszeile? Das heißt, was sehen Sie, wenn Sie schreiben dotnet --version?
Shaun Luttin
Hi @ShaunLuttin Ich habe gerade vor ein paar Tagen ein Upgrade durchgeführt ... 1.0.1
AndyNZ

Antworten:

140

Ist "dotnet new sln" ein neuer Befehl?

Ja. In Version 1.0.1 der Dotnet-Befehlszeilenschnittstelle gibt es einen dotnet new slnBefehl. Der Befehl kam mit dem Wechsel von project.json zu csproj . Wenn wir ausführen dotnet new --help, wird "Lösungsdatei" als eine der Vorlagen angezeigt.

> dotnet new --help

Templates                 Short Name      Language      Tags
----------------------------------------------------------------------
Console Application       console         [C#], F#      Common/Console
Class library             classlib        [C#], F#      Common/Library
Unit Test Project         mstest          [C#], F#      Test/MSTest
xUnit Test Project        xunit           [C#], F#      Test/xUnit
ASP.NET Core Empty        web             [C#]          Web/Empty
ASP.NET Core Web App      mvc             [C#], F#      Web/MVC
ASP.NET Core Web API      webapi          [C#]          Web/WebAPI
Solution File             sln                           Solution

wann soll ich das benutzen

Zwei Mal, um eine Lösungsdatei zu verwenden, sind:

  1. wenn wir Visual Studio verwenden möchten und / oder
  2. wenn wir mehrere Projekte als eine Einheit verwalten möchten.

Welche Vorteile bringt es mir, eine SLN-Datei zu erstellen, anstatt nur Projektdateien zu haben? Ist es hauptsächlich zum Öffnen in Visual Studio? Ich verwende Visual Studio Code für Mac, daher ist er möglicherweise nicht anwendbar.

Einer der Vorteile, für die Visual Studio nicht erforderlich ist, ist die Verwaltung mehrerer Projekte als eine Einheit.

Auf einem Mac mit Visual Studio-Code können wir beispielsweise mithilfe der dotnetCLI eine neue Lösung erstellen, einige Projekte erstellen, diese Projekte zur Lösung hinzufügen, die Lösung wiederherstellen und die Lösung erstellen.

dotnet new sln --name FooBar
dotnet new console --name Foo --output Foo
dotnet new console --name Bar --output Bar
dotnet sln add .\Foo\Foo.csproj
dotnet sln add .\Bar\Bar.csproj
dotnet restore
dotnet build FooBar.sln

Der letzte Befehl, der aufgerufen wird dotnet build, hat den Vorteil, dass alle in der Lösung enthaltenen Projekte erstellt werden. Ohne eine Lösung müssten wir dotnet buildjedes Projekt aufrufen .

Es gibt zweifellos andere Vorteile, für die Visual Studio nicht erforderlich ist. Ich überlasse diese Ihnen zu entdecken.

Shaun Luttin
quelle
Würden Sie empfehlen, eine Lösung für ein Klassenbibliotheksprojekt und das zugehörige Testprojekt zu verwenden?
Horia Coman
@HoriaComan Es scheint vernünftig, eine Lösung dafür zu verwenden, ja.
Shaun Luttin
Können wir dotnet run -p Foo\Foo.csprojfür MVC-Projekte verwenden? scheint nur zu funktionieren, wenn ich es tuecd Foo && dotnet run
Vincent De Smet
@ VincentDeSmet dotnet run -p .\Foo\Foo.csprojfunktioniert für mich.
Shaun Luttin
Es beschwerte sich darüber, keine config.Development.json zu haben, die für mich im Unterordner war
Vincent De Smet