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

问题描述 投票:0回答:5

以下示例来自此处我正在尝试执行

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

但我收到此错误:

找不到项目或目录

**/*.csproj

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

c# .net projects-and-solutions solution dotnet-cli
5个回答
27
投票

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

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

10
投票

我错过了这个声明:

基于 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 ""$_""" }

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"

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


2
投票

我在 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) 上对我有用


0
投票

对于Linux

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


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

© www.soinside.com 2019 - 2024. All rights reserved.