.NET Core - Kapan menggunakan "dotnet new sln"

87

Saya agak bingung - mayoritas tutorial .NET Core yang telah saya baca tidak menyebutkan "dotnet new sln" - mereka selalu hanya membuat proyek secara terpisah tanpa file solusi untuk menghubungkannya.

  1. Apakah "dotnet new sln" adalah perintah baru?

  2. Kapan saya harus menggunakan ini? Manfaat apa yang saya peroleh dari membuat file .sln daripada hanya memiliki file proyek? Apakah ini terutama untuk pembukaan di Visual Studio? Saya menggunakan Visual Studio Code untuk Mac, jadi ini mungkin tidak dapat diterapkan.

Saya sudah googling "dotnet new sln" dan hasilnya sangat minim.

AndyNZ
sumber
Versi apa dotnetyang Anda gunakan dari baris perintah? Artinya, apa yang Anda lihat saat menulis dotnet --version?
Shaun Luttin
Hai @ShaunLuttin Saya baru saja memutakhirkan beberapa hari yang lalu ... 1.0.1
AndyNZ

Jawaban:

148

Apakah "dotnet new sln" adalah perintah baru?

Iya. Dalam versi 1.0.1 dari antarmuka baris perintah dotnet, ada sebuah dotnet new slnperintah. Perintah tersebut datang dengan perubahan dari project.json ke csproj . Jika dijalankan dotnet new --help, kita akan melihat "File Solusi" sebagai salah satu template.

> 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

kapan saya harus menggunakan ini?

Dua kali untuk menggunakan file solusi adalah:

  1. ketika kita ingin menggunakan Visual Studio, dan / atau
  2. ketika kami ingin mengelola beberapa proyek sebagai satu kesatuan.

Manfaat apa yang saya peroleh dari membuat file .sln daripada hanya memiliki file proyek? Apakah ini terutama untuk pembukaan di Visual Studio? Saya menggunakan Visual Studio Code untuk Mac, jadi ini mungkin tidak dapat diterapkan.

Salah satu manfaat yang tidak memerlukan Visual Studio adalah pengelolaan beberapa proyek sebagai satu kesatuan.

Misalnya, di Mac dengan Visual Studio Code, kita dapat menggunakan dotnetCLI untuk membuat solusi baru, membuat beberapa proyek, menambahkan proyek tersebut ke solusi, memulihkan solusi, dan membangun solusi.

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

Perintah terakhir, yang memanggil dotnet build, memiliki manfaat membangun semua proyek yang ada dalam solusi. Tanpa solusi, kami perlu memanggil dotnet buildsetiap proyek.

Tidak diragukan lagi manfaat lain yang tidak memerlukan penggunaan Visual Studio. Saya serahkan pada Anda untuk ditemukan.

Shaun Luttin
sumber
Apakah Anda akan merekomendasikan menggunakan solusi untuk proyek perpustakaan kelas dan proyek pengujian terkait?
Horia Coman
@HoriaComan Sepertinya masuk akal untuk menggunakan solusi untuk itu, ya.
Shaun Luttin
Bisakah kita menggunakan dotnet run -p Foo\Foo.csprojuntuk proyek mvc? tampaknya hanya berfungsi ketika saya melakukannyacd Foo && dotnet run
Vincent De Smet
@VincentDeSmet dotnet run -p .\Foo\Foo.csprojberhasil untuk saya.
Shaun Luttin
itu mengeluh karena tidak memiliki config.Development.json yang ada di subfolder untuk saya
Vincent De Smet