.NET Core - Quando usar “dotnet new sln”

86

Estou um pouco confuso - a maioria dos tutoriais do .NET Core que tenho lido não menciona "dotnet new sln" - eles sempre apenas criam os projetos separadamente, sem nenhum arquivo de solução para vinculá-los.

  1. "Dotnet new sln" é um novo comando?

  2. Quando devo usar isso? Quais são os benefícios de criar um arquivo .sln em vez de apenas ter arquivos de projeto? É principalmente para abrir no Visual Studio? Eu uso o Visual Studio Code para Mac, portanto, pode não ser aplicável.

Eu pesquisei "dotnet new sln" e os resultados são mínimos.

AndyNZ
fonte
Qual versão do dotnetvocê está usando na linha de comando? Ou seja, o que você vê quando escreve dotnet --version?
Shaun Luttin
Olá @ShaunLuttin, acabei de atualizar há alguns dias ... 1.0.1
AndyNZ

Respostas:

145

"Dotnet new sln" é um novo comando?

Sim. Na versão 1.0.1 da interface de linha de comando dotnet, existe um dotnet new slncomando. O comando veio com a mudança de project.json para csproj . Se executarmos dotnet new --help, veremos "Arquivo de solução" como um dos modelos.

> 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

quando devo usar isso?

Duas vezes para usar um arquivo de solução:

  1. quando queremos usar o Visual Studio, e / ou
  2. quando queremos gerenciar vários projetos como uma única unidade.

Quais são os benefícios de criar um arquivo .sln em vez de apenas ter arquivos de projeto? É principalmente para abrir no Visual Studio? Eu uso o Visual Studio Code para Mac, portanto, pode não ser aplicável.

Um dos benefícios que não requerem o Visual Studio é o gerenciamento de vários projetos como uma única unidade.

Por exemplo, em um Mac com Visual Studio Code, podemos usar a dotnetCLI para criar uma nova solução, criar alguns projetos, adicionar esses projetos à solução, restaurar a solução e construir a solução.

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

O último comando, que chama dotnet build, tem a vantagem de construir todos os projetos que estão na solução. Sem uma solução, precisaríamos recorrer dotnet builda cada projeto.

Sem dúvida, existem outros benefícios que não requerem o uso do Visual Studio. Deixo isso para você descobrir.

Shaun Luttin
fonte
Você recomendaria usar uma solução para um projeto de biblioteca de classes e seu projeto de teste associado?
Horia Coman
@HoriaComan Parece razoável usar uma solução para isso, sim.
Shaun Luttin
Podemos usar dotnet run -p Foo\Foo.csprojpara projetos de mvc? parece funcionar apenas quando eu façocd Foo && dotnet run
Vincent De Smet
@VincentDeSmet dotnet run -p .\Foo\Foo.csprojfunciona para mim.
Shaun Luttin de
estava reclamando de não ter um config.Development.json que estava na subpasta para mim
Vincent De Smet