重建sln的项目层级
编写包含多个 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的项目层级的更多相关文章
- IOS整体项目层级构建
在创建IOS项目时,若有一个比较明确的层级架构,将对于今后代码的维护或者功能的扩展很有帮助:本文将通过一个实例来展现我对于层级的一些观点:里面有一些零碎的知识点可能无法全部介绍,到时提供源代码进行下载 ...
- grid - 网格项目层级
网格项目可以具有层级和堆栈,必要时可能通过z-index属性来指定. 1.在这个例子中,item1和item2的开始行都是1,item1列的开始是1,item2列的开始是2,并且它们都跨越两列.两个网 ...
- eclipse中maven父子项目层级显示设置
第一步:window-->show view --> project explorer 第二步:小三角---> projects presentation----->hiera ...
- 2018.2.2IDEA 项目层级问题
这个问题也不是太大,个人爱好,老是觉着影响美观.网上找了一下:[Hide Empty Middle Packages]说是把这个打勾的去掉就可以了. 但是:我的这个好像没有. 这样点击小齿轮把第二个C ...
- 【Unity】2.3 项目浏览器和资源的组织
分类:Unity.C#.VS2015 创建日期:2016-03-29 一.Project-工程浏览器 前面我们说过,Unity中的Project View(称为工程浏览器)相当于VS2015中的解决方 ...
- [原创]关于在VS解决方案下使用文件夹管理多个项目层次关系的说明
由于所创建的应用项目或类库项目较多,于是将这些类库放到一个文件夹下.在VS解决方案下确实能看到一个文件夹下多个类库项目这种层次关系.如下图所示: 但打开“我的电脑”,看到的只有类库,并未看到维护层次关 ...
- asp.net core react 项目实战(一)
asp.net-core-react asp.net core react 简介 开发依赖环境 .NET Core SDK (reflecting any global.json): Version: ...
- .NET Core/.NET5/.NET6 开源项目汇总5:权限管理系统项目
系列目录 [已更新最新开发文章,点击查看详细] 企业管理系统一般包含后台管理UI.组织机构管理.权限管理.日志.数据访问.表单.工作流等常用必备功能.下面收集的几款优秀开源的管理系统,值得大家 ...
- asp.net core web 解决方案多项目模板制作打包总结
一.文件夹\项目结构 1.1.文件夹 net6.0:针对.net 6.0 项目模板 net6.0pack:针对net6.0打包 1.2.项目结构 Web\WebApi多项目.各层项目.单元测试项目 目 ...
- iOS基于MVC的项目重构总结
关于MVC的争论 关于MVC的争论已经有很多,对此我的观点是:对于iOS开发中的绝大部分场景来说,MVC本身是没有问题的,你认为的MVC的问题,一定是你自己理解的问题(资深架构师请自动忽略本文). 行 ...
随机推荐
- 一些OI常用小技巧啊
1.卡常 \[---总有人以为自己比编译器聪明 \;\;\;by\;\;bezel \] 我们可能确实没有编译器聪明,但是,为了防止CCF的老人机出现什么问题,卡一卡常还是有必要的. 如果实在被逼无奈 ...
- 直播预告 | YashanDB 2023年度发布会正式定档11月8日,邀您共同见证国产数据库发展实践!
11月8日,YashanDB 2023年度发布会将于云端直播开启,发布会以 「惟实·励新」 为主题,邀请企业用户.合作伙伴.广大开发者共同见证全新产品与解决方案.届时发布会将在墨天轮社区同步进行,欢迎 ...
- 3.flask 源码解析:路由
目录 一.flask 源码解析:路由 1.1 构建路由规则 1.2 werkzeug 路由逻辑 1.3 flask 路由实现 1.4 match 实现 Flask 源码分析完整教程目录:https:/ ...
- POI方式实现Excel表格数据导出
Excel表格导出 1.添加pom依赖 1 <!-- office 操作工具 --> 2 <dependency> 3 <groupId>org.apache.po ...
- 数据运算中关于字符串""的拼接问题
例子中准备了3种类型数据,分别针对是否在运算存在空字符串参与运算进行了演示,结果如下: 1 int x = 10; 2 double y = 20.2; 3 long z = 10L; 4 Syste ...
- 别再售卖 5块钱 的 Win10 激活码了,后果很严重
为了推广Windows 10系统(以下简称Win10),微软过去几年中一直给免费升级,Win7免费洗白的策略现在都还管用. 微软的大方也让很多人忘了Win10系统是要收费的,而且价格不便宜,国内的话, ...
- RMI,SOA,微服务
什么是SOA SOA(Service-Oriented Architecture),中文全称:面向服务的架构. SOA提倡将不同应用程序的业务功能封装成"服务"并宿主起来,通常以接 ...
- Ubuntu安装Edge浏览器,好用的浏览器!!
秉持着简介的原则,我这里把重要的步骤记录下来,减少废话的使用量,大大缩短你们看的时间,好吧.. 步骤 首先,使用以下命令更新您的系统: sudo apt update 然后,使用以下命令安装Micro ...
- 基于Java+SpringBoot+Mysql实现的古诗词平台功能设计与实现八
一.前言介绍: 1.1 项目摘要 随着信息技术的迅猛发展和数字化时代的到来,传统文化与现代科技的融合已成为一种趋势.古诗词作为中华民族的文化瑰宝,具有深厚的历史底蕴和独特的艺术魅力.然而,在现代社会中 ...
- springboot的基本使用
SpringBoot简介 SpringBoot是由Pivotal团队提供的全新框架,其设计目的是用来简化Spring应用的初始搭建以及开发过程. 使用了Spring框架后已经简化了我们的开发,而Spr ...