.NET Core: cuándo usar "dotnet new sln"

86

Estoy un poco confundido: la mayoría de los tutoriales de .NET Core que he estado leyendo no mencionan "dotnet new sln"; siempre crean los proyectos por separado sin ningún archivo de solución para vincularlos.

  1. ¿Es "dotnet new sln" un comando nuevo?

  2. ¿Cuándo debería usar esto? ¿Qué beneficios obtengo al crear un archivo .sln en lugar de solo tener archivos de proyecto? ¿Es principalmente para abrir en Visual Studio? Utilizo Visual Studio Code para Mac, por lo que puede que no sea aplicable.

Busqué en Google "dotnet new sln" y los resultados son mínimos.

AndyNZ
fuente
¿Qué versión de dotnetestás usando desde la línea de comandos? Es decir, ¿qué ves cuando escribes dotnet --version?
Shaun Luttin
Hola @ShaunLuttin Acabo de actualizar hace un par de días ... 1.0.1
AndyNZ

Respuestas:

145

¿Es "dotnet new sln" un comando nuevo?

Si. En la versión 1.0.1 de la interfaz de línea de comandos dotnet, hay un dotnet new slncomando. El comando vino con el cambio de project.json a csproj . Si lo ejecutamos dotnet new --help, veremos "Archivo de solución" como una de las plantillas.

> 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

cuando debo usar esto?

Dos veces para usar un archivo de solución son:

  1. cuando queremos usar Visual Studio, y / o
  2. cuando queremos gestionar varios proyectos como una sola unidad.

¿Qué beneficios obtengo al crear un archivo .sln en lugar de solo tener archivos de proyecto? ¿Es principalmente para abrir en Visual Studio? Utilizo Visual Studio Code para Mac, por lo que puede que no sea aplicable.

Uno de los beneficios que no requiere Visual Studio es la gestión de múltiples proyectos como una sola unidad.

Por ejemplo, en una Mac con Visual Studio Code, podemos usar la dotnetCLI para crear una nueva solución, crear algunos proyectos, agregar esos proyectos a la solución, restaurar la solución y construir la solución.

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

El último comando, que llama dotnet build, tiene la ventaja de construir todos los proyectos que están en la solución. Sin una solución, tendríamos que recurrir a dotnet buildcada proyecto.

Sin duda, existen otros beneficios que no requieren el uso de Visual Studio. Los dejo para que los descubras.

Shaun Luttin
fuente
¿Recomendaría utilizar una solución para un proyecto de biblioteca de clases y su proyecto de prueba asociado?
Horia Coman
@HoriaComan Parece razonable usar una solución para eso, sí.
Shaun Luttin
¿Podemos usar dotnet run -p Foo\Foo.csprojpara proyectos de mvc? Parece que solo funciona cuando yo lo hagocd Foo && dotnet run
Vincent De Smet
@VincentDeSmet dotnet run -p .\Foo\Foo.csprojfunciona para mí.
Shaun Luttin
se quejaba de no tener un config.Development.json que estaba en la subcarpeta para mí
Vincent De Smet