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

lymgl2op  于 2023-10-21  发布在  .NET
关注(0)|答案(5)|浏览(192)

下面的例子从here我试图执行

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

但我得到了这个错误:
找不到项目或目录**/*.csproj
看起来通配符不起作用。我做错了什么?

dxxyhpgq

dxxyhpgq1#

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

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

i5desfxk2#

我错过了这个声明:
基于Unix/Linux的终端支持全局化模式
我的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 ""$_""" }
csbfibhn

csbfibhn3#

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

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

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

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

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

gg58donl

gg58donl4#

我在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)上运行

kognpnkq

kognpnkq5#

For Linux

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

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

相关问题