.NET Core - когда использовать «dotnet new sln»

86

Я немного сбит с толку - в большинстве руководств по .NET Core, которые я читал, не упоминается «dotnet new sln» - они всегда просто создают проекты отдельно без какого-либо файла решения, чтобы связать их вместе.

  1. "Dotnet new sln" новая команда?

  2. Когда я должен это использовать? Какие преимущества я получаю от создания файла .sln вместо файлов проекта? Это в основном для открытия в Visual Studio? Я использую Visual Studio Code для Mac, поэтому он может быть неприменим.

Я погуглил "dotnet new sln", и результаты очень минимальны.

AndyNZ
источник
Какую версию dotnetвы используете из командной строки? То есть что вы видите, когда пишете dotnet --version?
Shaun Luttin
Привет @ShaunLuttin, я только что обновился пару дней назад ... 1.0.1
AndyNZ

Ответы:

145

"Dotnet new sln" новая команда?

Да. В версии 1.0.1 интерфейса командной строки dotnet есть dotnet new slnкоманда. Команда пришла с изменением с project.json на csproj . Если мы запустим dotnet new --help, мы увидим «Файл решения» как один из шаблонов.

> 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

когда я должен использовать это?

Два раза использовать файл решения:

  1. когда мы хотим использовать Visual Studio и / или
  2. когда мы хотим управлять несколькими проектами как единым целым.

Какие преимущества я получаю от создания файла .sln вместо файлов проекта? Это в основном для открытия в Visual Studio? Я использую Visual Studio Code для Mac, поэтому он может быть неприменим.

Одним из преимуществ, для которого не требуется Visual Studio, является управление несколькими проектами как единым целым.

Например, на Mac с Visual Studio Code мы можем использовать dotnetCLI для создания нового решения, создания нескольких проектов, добавления этих проектов в решение, восстановления решения и построения решения.

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

Последняя команда, которая вызывает dotnet build, позволяет построить все проекты, которые есть в решении. Без решения нам пришлось бы обращаться dotnet buildк каждому проекту.

Несомненно, есть и другие преимущества, которые не требуют использования Visual Studio. Я оставляю это на ваше усмотрение.

Шон Латтин
источник
Вы бы порекомендовали использовать решение для проекта библиотеки классов и связанного с ним тестового проекта?
Horia Coman
@HoriaComan Кажется разумным использовать для этого решение, да.
Shaun Luttin
Можем ли мы использовать dotnet run -p Foo\Foo.csprojдля проектов mvc? кажется, работает только тогда, когда я работаюcd Foo && dotnet run
Винсент Де Смет
@VincentDeSmet dotnet run -p .\Foo\Foo.csprojдействительно работает для меня.
Шон Латтин
он жаловался на отсутствие config.Development.json, который был для меня во вложенной папке
Винсент Де Смет