如何使用dotnet sln将所有项目添加到单个解决方案中?

13

我正在尝试执行以下来自这里的示例

dotnet sln AllProjects.sln add **/*.csproj

但我收到了这个错误:

无法找到项目或目录** / * .csproj

看来通配符没有起作用。 我做错了什么?


操作系统是什么? - Chris Catignani
Windows,PowerShell - astef
你的项目是使用 .NET Core 开发的吗? - er-sho
不,它们不是。 - astef
不太确定,但我认为***/*是基于Linux的...尝试使用(dot) ./*或(dot)(dot)如果您要备份一级。 - Chris Catignani
5个回答

27

对于Windows,打开PowerShell并运行以下命令将所有项目添加到解决方案文件中:

 dotnet sln add (ls -r **/*.csproj)

这在Linux中如何实现? - jvbs
2
运行上述命令会抛出错误:由于_ls_前面的'$'丢失,因此出现语法错误_near unexpected token `('_。正确的语法是:_dotnet sln add $(ls -r **/*.csproj)_,该语法在(Git和Linux) bash上可用。 - Cesar Urdaneta
dotnet sln add $(ls -r **/*.csproj) - undefined

10

我错过了这个声明:

Unix/Linux终端支持globbing模式

我的Windows PowerShell解决方案如下:

$projects = Get-ChildItem -Recurse | Where-Object { $_.Name -match '^.+\.(csproj|vbproj)$' }

$uniqueProjects = $projects | Group-Object -Property Name | Where Count -EQ 1 | select -ExpandProperty Group | % { $_.FullName }

Invoke-Expression -Command "dotnet new sln -n AllProjects"

$uniqueProjects | % { Invoke-Expression -Command "dotnet sln AllProjects.sln add ""$_""" }

1
这个应该被投下去。工作量太大了。正确的答案如下:dotnet sln add (ls **/*.csproj) - Quark Soup
官方文档中包含了比这个更好的解决方案。https://learn.microsoft.com/en-us/dotnet/core/tools/dotnet-sln - Branislav B.

7

在Windows上,您还可以使用以下命令将所有子目录中的项目递归地添加到现有解决方案文件中:

FOR /R %i IN (*.csproj) DO dotnet sln add "%i"

另外,如果您需要经常(重新)创建解决方案文件,则可以创建一个批处理文件,其中包含以下内容,然后只需在需要时运行它:

dotnet new sln 
FOR /R %%i IN (*.csproj) DO dotnet sln add "%%i"

请注意,在批处理文件中执行此操作时,需要额外的百分号%。

3
我在Git Bash上尝试了ls -r命令。
dotnet sln add (ls -r **/*.csproj)

但是它给了我

$ dotnet sln add (ls -r **\*.csproj)
bash: syntax error near unexpected token `('

然后我尝试了一下

dotnet sln add **/*.csproj

这在我的Git Bash(Windows)上有效。


(ls...) 前面缺少符号 $。 - Cesar Urdaneta
在那个部分,我写了带有控制台输出的命令,并且那个$符号不是来自命令。你应该执行的命令是这个答案中的第一个命令或最后一个命令。第二个命令是第一个命令的输出。 - HBA114
dotnet sln add $(ls -r **/*.csproj) - undefined

1
对于Linux
find . -name "*.csproj" -print0 | xargs -0 dotnet sln add


find . -name "*.csproj" ! -name "exclude-this.csproj" -print0 | xargs -0 dotnet sln add


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接