.NET Core-何时使用“ dotnet new sln”


86

我有点困惑-我正在阅读的大多数.NET Core教程都没有提到“ dotnet new sln”-它们始终只是单独创建项目,而没有任何解决方案文件将它们链接在一起。

  1. “ dotnet new sln”是新命令吗?

  2. 我什么时候应该使用这个?通过创建.sln文件而不是仅包含项目文件,我可以获得什么好处?它主要用于在Visual Studio中打开吗?我使用Visual Studio Code for Mac,因此它可能不适用。

我用Google搜索了“ dotnet new sln”,结果非常小。


dotnet您从命令行使用的是哪个版本?也就是说,您在写作时会看到什么dotnet --version
Shaun Luttin

嗨@ShaunLuttin我是几天前刚刚升级的... 1.0.1
AndyNZ

Answers:


145

“ dotnet new sln”是新命令吗?

是。在dotnet命令行界面的1.0.1版本中,有一个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 for Mac,因此它可能不适用。

不需要Visual Studio的好处之一就是将多个项目作为一个单元进行管理。

例如,在带有Visual Studio Code的Mac上,我们可以使用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
Vincent De Smet

@VincentDeSmetdotnet run -p .\Foo\Foo.csproj确实为我工作。
Shaun Luttin

它抱怨没有子文件夹config.Development.json
Vincent De Smet
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.