重建sln的项目层级

sln,项目,层级 · 浏览次数 : 110

小编点评

当然,以下内容可以帮助您生成包含多个 csproj 的程序时,随着项目数量的持续增加,可能涉及一些文件夹的变动,手动添加项目或者变动会变得非常麻烦。 **使用 .net cli 生成包含多个 csproj 的程序** 1. 创建一个新的解决方案: ``` dotnet new sln -n todo.sln ``` 2. 将当前目录内的所有 csproj 文件添加到解决方案中: ``` $rootDir = Get-Location$solutionFile = " $rootDir\\todo.sln" Get-ChildItem -Recurse -Filter *.csproj | ForEach-Object { $projectFile = $_.FullName $relativePath = $_.DirectoryName.Replace($rootDir, "\").TrimStart("\\\") $solutionFolder = if ($relativePath) { " \\$relativePath" } else { "" } dotnet sln $solutionFile add $projectFile --solution-folder $solutionFolder } ``` **其他选项** * 使用 `-r` 参数来递归遍历所有子目录。 * 使用 `-p` 参数指定项目文件夹的路径。 * 使用 `-c` 参数指定解决方案文件夹的路径。 **注意** * 此命令假设所有项目都位于同一个文件夹中。 * 如果项目文件夹结构复杂,可能需要使用更复杂的命令。

正文

编写包含多个 csproj 的程序时,随着项目数量的持续增加,可能涉及一些文件夹的变动,手动添加项目或者变动会变得非常麻烦,这个时候,可以利用 dotnet cli 帮助我们完成。

如果从零开始,我们可以新建一个解决方案。

dotnet new sln -n todo.sln

然后添加当前目录内的所有 csproj 文件到解决方案。

$rootDir = Get-Location
$solutionFile = "$rootDir\todo.sln"

Get-ChildItem -Recurse -Filter *.csproj | ForEach-Object {
    $projectFile = $_.FullName
    $relativePath = $_.DirectoryName.Replace($rootDir, "").TrimStart("\")
    $solutionFolder = if ($relativePath) { "\$relativePath" } else { "" }
    dotnet sln $solutionFile add $projectFile --solution-folder $solutionFolder
}

这样生成的项目会保留每一个文件夹结构(解决方案文件夹),与 Visual Studio 的默认行为不同(会忽略与项目同名的解决方案文件夹创建)。

其实简单一些,直接使用这个命令就可以了:

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

这个命令等效于:

$rootDir = Get-Location
$solutionFile = "$rootDir\todo.sln"

Get-ChildItem -Recurse -Filter *.csproj | ForEach-Object {
    $projectFile = $_.FullName
    $parentDirectoryName = Split-Path $_.DirectoryName -Leaf
    if ($_.Name -eq "$parentDirectoryName.csproj") {
        if($_.DirectoryName -ne $rootDir){
            $parentSolutionFolder = (Split-Path $_.DirectoryName -Parent).Replace($rootDir, "").TrimStart("\")
            $solutionFolder = if ($parentSolutionFolder) { "\$parentSolutionFolder" } else { "" }
        }
        else{
            $solutionFolder = ""
        }
    } else {
        $relativePath = $_.DirectoryName.Replace($rootDir, "").TrimStart("\")
        $solutionFolder = if ($relativePath) { "\$relativePath" } else { "" }
    }
    dotnet sln $solutionFile add $projectFile --solution-folder $solutionFolder
}

上面这个感觉很复杂,不过相当于给出了每一个步骤,如果后期有其他需求,可以在上面代码的基础上进行调整与改进。

与重建sln的项目层级相似的内容:

重建sln的项目层级

编写包含多个 `csproj` 的程序时,随着项目数量的持续增加,可能涉及一些文件夹的变动,手动添加项目或者变动会变得非常麻烦,这个时候,可以利用 `dotnet cli` 帮助我们完成。 如果从零开始,我们可以新建一个解决方案。 ```powershell dotnet new sln -n to

剑指 Offer 07. 重建二叉树(java解题)

leetcode《图解数据结构》剑指 Offer 07. 重建二叉树(java解题)的解题思路和java代码,并附上java中常用数据结构的功能函数。

2.9 PE结构:重建导入表结构

脱壳修复是指在进行加壳保护后的二进制程序脱壳操作后,由于加壳操作的不同,有些程序的导入表可能会受到影响,导致脱壳后程序无法正常运行。因此,需要进行修复操作,将脱壳前的导入表覆盖到脱壳后的程序中,以使程序恢复正常运行。一般情况下,导入表被分为IAT(Import Address Table,导入地址表)和INT(Import Name Table,导入名称表)两个部分,其中IAT存储着导入函数的地址

2.10 PE结构:重建重定位表结构

Relocation(重定位)是一种将程序中的一些地址修正为运行时可用的实际地址的机制。在程序编译过程中,由于程序中使用了各种全局变量和函数,这些变量和函数的地址还没有确定,因此它们的地址只能暂时使用一个相对地址。当程序被加载到内存中运行时,这些相对地址需要被修正为实际的绝对地址,这个过程就是重定位。在Windows操作系统中,程序被加载到内存中运行时,需要将程序中的各种内存地址进行重定位,以使程

用于双目重建中的GPU编程:julia-cuda

julia是2010年开始面世的语言,作为一个10后,Julia必然有前辈们没有的特点。本文着重介绍julia的项目背景、效率问题,如何使用for训练的方式、julia-cuda的实现方式。

[转帖]oracle清理临时表空间

https://blog.51cto.com/u_11310506/2357625 为了防止临时表空间无限制的增加,我采用隔一段时间就重建临时表空间的方法,为了方便,我保留两组语句,轮流执行即可, 假定现在临时表空间名称是temp,新建一个tempa表空间,删除temp表空间,方法如下: alter

[转帖]金仓数据库KingbaseES V8R6索引坏块故障处理

案例说明: 在执行表数据查询时,出现下图所示错误,索引故障导致表无法访问,后重建索引问题解决。本案例复现了此类故障解决过程。 适用版本: KingbaseES V8R3/R6 一、创建测试环境 # 表结构信息prod=# \d+ test1 Table "public.test1" Column|

突破自我认知的壁垒

从之前非常迷茫到现在慢慢变清晰,其实我发现很多时候看似难以逾越的问题下要突破自我认知的壁垒,需要你有打破了重建的自我革命精神!你所看到的世界并不一定是真实的世界,都是在自我认知固化和以你的生活为蓝本的大数据编织的信息茧房中,就如同黑客帝国中的Matix一样,现实迷茫的时候你必须要突破自己的理解误区。

[转帖]Docker容器无法访问网络问题(网段冲突)

近日在使用docker在腾讯云服务器上部署项目 运行容器时死活访问不了网络,不论是外网还是内网。 最后找到原因是docker容器ip网段与服务器内网ip网段冲突导致的 使用此命令查看到 ifconfig 1 可以看到ip段冲突了 咱们重建docker的ip段 首先删除docker的网卡docker0

重构代码的一些想法

重构代码的一些想法 模块设计 需要明确服务的核心功能 执行时机(被谁驱动) 执行内容 和非核心功能的关系 从模块话的角度看,这三个部分其实都可以独立实现,这样更利于单元测试用例的编写,扎实的单元测试覆盖率大大提高对稳定性的信心。 执行时机一般都是外部驱动,如收到任务、请求甚至内部定时器驱动。 核心功