title author date CreateTime categories
VisualStudio 解决方案筛选器 slnf 文件
lindexi
2019-11-29 08:41:13 +0800
2019-04-07 10:58:41 +0800
VisualStudio

在 VisualStudio 2019 发布的时候,有一个强大的功能是不加载项目打开提升性能,此时可以用到解决方案筛选器 slnf 文件。这个文件将会带来很大的性能提升。本文将会详细告诉大家这个文件的格式以及带来的好处

在上古时代,我有一个大项目,这个大项目里面有很多单元测试和呆魔,我每次打开这个项目的时候都需要等半天。

于是想到的解决方法是创建两个 sln 文件,一个是作为核心的项目,另一个是核心项目加上测试和呆魔,如果只是需要开发,那么就打开核心的项目。如果是需要同时进行测试什么的,就可以打开另一个带单元测试的项目。

但是这样玩存在一个坑就是小伙伴只是在一个项目添加了新的项目,但是忘了在另一个项目里面添加,于是就会发现发布的版本和实际开发的版本的功能不相同。如果是核心的项目还好,编译不通过,如果是扩展就只有在测试的时候才发现没有这个功能。

于是我就被拉出去了,好在我的小伙伴 walterlv 大大用了这个科技 VS 编译太慢了吗?新建解决方案配置关闭一部分项目的编译 这样就可以提升编译的速度,在编译的时候会忽略测试或呆魔等

但是 walterlv 还没解决我的问题,我在打开工程的时候,还是需要等待 VisualStudio 加载单元测试项目,还是需要等很久。

好在 VisualStudio 2019 有了解决方案筛选器这个功能,这个功能是如何玩的?

在 VisualStudio 2019 新的欢迎界面,有了不加载项目的选择,于是就可以不加载项目打开

这时打开的项目都是不加载的,虽然打开很快,但是我需要手动加载我需要使用的项目。如果每个小伙伴都需要这样手动加载,估计我又会被拉出去

在 VisualStudio 2019 可以在第一次手动加载需要的项目之后保存解决方案筛选器 slnf 文件,当然不需要每个项目都点击重新加载,定义指定一个高层的项目,右击点击加载依赖项目,于是所有被他依赖的项目都会加载

下次小伙伴直接打开 slnf 文件的时候就可以看到只有我上次加载的项目,其他的项目默认是隐藏的

如果小伙伴忽然需要某个项目,可以右击显示隐藏的项目

那么使用 slnf 文件有什么好处?

上面说到的,可以加载只需要的项目,于是打开项目的速度很快。同时支持显示隐藏的项目,在大多数的开发都可以使用自己需要的项目,但是在临时需要其他项目的时候也可以右击加载。

那么对比多个 sln 文件的好处就是,多个 sln 可能有小伙伴忘记在多个项目添加项目,而 slnf 文件是依赖于指定的 sln 文件,所以只需要往 sln 或 slnf 里面添加一次项目就可以了。

如我在 sln 项目里面添加了呆魔项目,那么我只需要点击全保存,更新 sln 文件,然后在到 slnf 项目里面就可以看到提示项目已经修改,是否重新加载。点击重新就在就可以看到刚才加入的呆魔项目了。

反过来,如果我在 slnf 项目里面添加一个项目,在点击保存的时候也会在 sln 项目提示重新加载此时就可以看到添加的项目

那么这是如何做到的,下面告诉大家 slnf 的项目文件格式,这是一个 Json 文件,这个 Json 文件里面记录了依赖的 sln 文件和需要过滤打开的项目的相对路径,如我的一个 slnf 文件就是这样

{
"solution": {
"path": "VisualStudio2019.sln",
"projects": [
"VisualStudio2019\\VisualStudio2019.csproj"
]
}
}

这个 slnf 文件依赖于 VisualStudio2019.sln 文件,于是所有的添加项目或移除项目实际上是对 VisualStudio2019.sln 文件进行添加或移除项目,不会修改 slnf 文件,于是就可以同步修改一次,不会因为有多个项目忘记添加

同时记录了需要加载的项目的相对路径,这样就可以在启动的时候只加载需要的项目而不需要去读取分析 sln 文件,只有在右击显示隐藏的项目的时候才读取分析 sln 文件找到其他的项目

通过 slnf 文件可以加载只需要的项目,同时解决多个 sln 文件添加项目的同步问题,提升了项目文件打开的性能和编译性能

更多的新功能请看 VisualStudio 2019 新特性

Load a subset of projects - Visual Studio

2019-11-29-VisualStudio-解决方案筛选器-slnf-文件的更多相关文章

  1. 2019.11.29 SAP SMTP郵件服務器配置 發送端 QQ郵箱

    今天群裏的小夥伴問了如何配置郵件的問題,隨自己在sap裏面配置了一個 1.    RZ10配置參數 a)       参数配置前,先导入激活版本 执行完毕后返回 b)      输入参数文件DEFAU ...

  2. 2018.11.29 Struts2中拦截器的学习&项目的实际运用

    struts2官方架构 拦截器的创建 第一种方式 第二种方式 看源码AbstractInterceptor 底层已经帮我们写过这些方法了 第三种方式(推荐) 拦截器API学习 放行 前后处理 不放行, ...

  3. 2019.11.29 Mysql的数据操作

    为名为name的表增加数据(插入所有字段) insert into name values(1,‘张三’,‘男’,20); 为名为name的表增加数据(插入部分字段) insert into name ...

  4. pycharm+anaconda在Mac上的配置方法 2019.11.29

    内心os: 听人说,写blog是加分项,那他就不是浪费时间的事儿了呗 毕竟自己菜还是留下来东西来自己欣赏吧 Mac小电脑上进行python数据开发环境的配置 首先下载Anaconda,一个超好用的数据 ...

  5. Supervision meeting notes 2019/11/29

    topic 分支:  1. subgraph/subsequence mining Wang Jin, routine behavior/ motif. Philippe Fournier Viger ...

  6. 2019-4-7-VisualStudio-解决方案筛选器-slnf-文件

    title author date CreateTime categories VisualStudio 解决方案筛选器 slnf 文件 lindexi 2019-04-07 11:34:59 +08 ...

  7. 创建、导入、导出、复制以及粘贴 WMI 筛选器

    TechNet 库 Deployment Forefront Identity and Access Management 基础结构优化 浏览器 Microsoft Dynamics Products ...

  8. EOJ Monthly 2019.11 E. 数学题(莫比乌斯反演+杜教筛+拉格朗日插值)

    传送门 题意: 统计\(k\)元组个数\((a_1,a_2,\cdots,a_n),1\leq a_i\leq n\)使得\(gcd(a_1,a_2,\cdots,a_k,n)=1\). 定义\(f( ...

  9. 一个或多个筛选器或者Listeners启动失败 的问题探索以及解决方案

    2020年10月9日更新 经过本人对SSM框架理解的加深和对IDEA工具使用的熟悉,现提出一种新的解决办法,以前的解决办法可能存在问题 1. 问题描述: 使用IDEA作为开发工具,使用Maven作为项 ...

随机推荐

  1. MQTT协议 Websocket JS客户端

    特别提示:本人博客部分有参考网络其他博客,但均是本人亲手编写过并验证通过.如发现博客有错误,请及时提出以免误导其他人,谢谢!欢迎转载,但记得标明文章出处:http://www.cnblogs.com/ ...

  2. xshell上windows和linux互传文件命令

    1.安装lrzsz包: yum install -y lrzsz 2.从windows上传文件到linux服务器: rz 会弹出选择文件窗口,按照提示做就行3.从linux服务器下载文件到本地的win ...

  3. leetcode-easy-string-7 Reverse Integer

    mycode class Solution(object): def reverse(self, x): """ :type x: int :rtype: int &qu ...

  4. 转 Cookie、Session

    https://www.cnblogs.com/liwenzhou/p/8343243.html Cookie的由来 大家都知道HTTP协议是无状态的. 无状态的意思是每次请求都是独立的,它的执行情况 ...

  5. WPF图标拾取器

    <Grid x:Name="LayoutRoot"> <Border BorderBrush="> <Border.Effect> & ...

  6. Redis中存字段key出现 \xef \xbb \xbf

    环境: java向redis中存数据用于重复判断,结果有一条记录居然去不了重复,用Redis DeskTop Manager 查看发现,有一个 key 中居然是这样的: 20190324157:\xE ...

  7. Web02_HTML&CSS

    HTML 表单标签属性介绍 <!DOCTYPE html> <html> <head> <meta charset="UTF-8"> ...

  8. 解决 /usr/lib/x86_64-linux-gnu/liblapack.so.3: undefined reference to `gotoblas'

    最近需要用到openblas库,本地ubuntu 系统内有一个版本,但是想用自己新编译的openblas, 使用cmake指定了链接的库地址, SET(LINK_LIB_DIRS "/usr ...

  9. node递归批量重命名指定文件夹下的文件

    1.用法:将js内容拷到一文件中,命名为batchRename.js:  该文件可以放到任何你想更改文件名的文件夹目录,然后dos(或 linux 终端)进入该文件夹,然后执行node batchRe ...

  10. python学习之面向对象(三)

    6.8 类的结构细化 6.8.1 类的私有成员 类中的私有成员包括:私有类的属性,私有对象属性,私有类方法 私有静态属性 类的内部可以访问,类的外部不可以访问,派生类中不可以访问 class A: _ ...