在 Visual Studio 的解决方案资源管理器中隐藏一些文件
项目文件中有一些属性几乎是专门为 IDE 而准备的,不过考虑到 .NET 生态的开发者多数都使用 Visual Studio,所以基本上也只有 Visual Studio 对这些特性支持的最全面。(才不会透漏这些属性其实本就是为 Visual Studio 而准备的呢。)
本文将介绍如何在 Visual Studio 的解决方案资源管理器中隐藏一些文件。
本文内容
- 原生支持
- 原生不支持
- 变通解决
- 活学活用
原生支持
Visual Studio 原生支持 Visible
属性用来控制某一项文件是否在 Visual Studio 的解决方案资源管理器中显示。具体来说,是这样设置的:
<Project Sdk="Microsoft.NET.Sdk"><PropertyGroup><TargetFramework>netcoreapp2.1</TargetFramework><EnableDefaultItems>false</EnableDefaultItems></PropertyGroup><ItemGroup><Compile Include="**\*.cs" Exclude="obj\**\*.cs" Visible="false" /></ItemGroup>
</Project>
好了,任务完成,全文结束!
要是只有这样,我才不会写这篇文章呢!
原生不支持
考虑一下像上图那样有些文件在文件夹中的情况,然后我们再次设置 Visible="false"
属性:
文件夹竟然还在!这是 Visual Studio 的 Bug 吗?
还真是,至少在 Visual Studio 的项目系统中就有这样的 Issue 处于打开的状态:
- Content Visible=false hides the item, but not the directories in Solution Explorer · Issue #162 · Microsoft/VSProjectSystem
回复是:
Yes this is a known issue. We are discussing options to resolve it over here dotnet/roslyn-project-system#1233
好吧,那就等着解决吧!不过等大家的 Visual Studio 更新到解决的版本还需要很久吧。
变通解决
所以,我们只好采取其他手段来解决,最容易想到的是编写一个 <Target />
。
<Target Name="IncludeSourceCodes" BeforeTargets="CoreCompile"><ItemGroup><Compile Include="**\*.cs" Exclude="bin\**\*.cs;obj\**\*.cs;" /></ItemGroup>
</Target>
这样,引入这些文件就是通过在编译时才引入的。没有开始编译时,项目中自然看不见。
如果这样的例子发生在制作的 NuGet 包中,那么这个文件可能在 NuGet 包中的路径是 /build/Walterlv.Demo.targets;为了引用额外的源码,我们可以加上额外的路径信息:
<Target Name="IncludeSourceCodes" BeforeTargets="CoreCompile"><ItemGroup><Compile Include="$(MSBuildThisFileDirectory)..\src\**\*.cs" Exclude="$(MSBuildThisFileDirectory)..\src\bin\**\*.cs;$(MSBuildThisFileDirectory)..\src\obj\**\*.cs;" /></ItemGroup>
</Target>
活学活用
这并不是说在 Visual Studio 的解决方案资源管理器中,隐藏文件都应该采用 <Target />
来做,毕竟这样太复杂了。如果没有太复杂的要求,直接些 Visible="false"
也未尝不可。
比较复杂的情况可能比如:
- 制作跨平台的 NuGet 源码包,安装后就像直接把源码放进项目一样
- 需要额外为项目准备一些辅助运行的必要文件
参考资料
- Content Visible=false hides the item, but not the directories in Solution Explorer · Issue #162 · Microsoft/VSProjectSystem
我的博客会首发于 https://blog.walterlv.com/,而 CSDN 会从其中精选发布,但是一旦发布了就很少更新。
如果在博客看到有任何不懂的内容,欢迎交流。我搭建了 dotnet 职业技术学院 欢迎大家加入。
本作品采用知识共享署名-非商业性使用-相同方式共享 4.0 国际许可协议进行许可。欢迎转载、使用、重新发布,但务必保留文章署名吕毅(包含链接:https://walterlv.blog.csdn.net/),不得用于商业目的,基于本文修改后的作品务必以相同的许可发布。如有任何疑问,请与我联系。
在 Visual Studio 的解决方案资源管理器中隐藏一些文件相关推荐
- Visual Studio 2015 解决方案资源管理器
位置 解决方案资源管理器 窗口默认位于右上角. 它与另一个窗口 类视图 位于相同的位置. 打开 类视图 可以在菜单栏中选择 视图 | 类视图 即可打开该窗口.如下图: 解决方案管理器 窗口显示了组成 ...
- 扩展Visual Studio 2010服务器资源管理器中的SharePoint结点
Visual Studio 2010最大的卖点就是可扩展性.这样就可以借助.NET社区的力量基于VS构建出许多有用的工具.本文中我们将展示如何扩展VS2010的服务器资源管理器,在其中的SharePo ...
- 解决方案资源管理器中没有头文件源文件
转自:http://blog.csdn.net/wsj998689aa/article/details/40051287 我们操作VS的时候,正常情况下,解决方案窗口中,项目内文件的布局如下: 可是, ...
- “解决方案资源管理器”中不能自动选择正在编辑的文档
本来正在编辑的文档应该在"解决方案资源管理器"中自动选中的,但是我的VS2005机器好像没有这个功能,后来发现 "工具->选贤"里边的"项目和解 ...
- 签入在服务器上之后,别人获取了,在解决方案资源管理器中找不到。
签入在服务器上之后,别人获取了,在解决方案资源管理器中找不到. 这个问题具体原因我也不太清楚,但是我找到了一个解决方案.直接在解决方案上右键,添加,添加现有项.把在解决方案资源管理器上看不见的选中,添 ...
- 已有文件夹添加到ASP.NET解决方案资源管理器中
我有点不习惯用vs来码h5代码,所以把c#代码用vs写,h5代码用vs code写,现在发现一个问题,我在项目目录中自己创建的文件夹.css.html等页面没有在vs的解决方案资源管理器中显示出来,这 ...
- visual studio 里面解决方案资源管理器界面不见了,应该如何显示出来?并且如何将其从右边更改到左边
1.打开visual studio 软件 出现的界面没有[解决方案资源管理器界面],如下图所示: 2.点击顶部的[视图]菜单,如下图所示: 3.打开[视图]后,会出现[解决方案资源管理器],点击一下即 ...
- Visual Stdio的解决方案资源管理器位置调整
其实这是个极为简单的操作,可是我最初真的不会弄,哈哈,自嘲一下. 我刚装了vs2013,这个解决方案资源管理器默认靠右了,习惯了靠左,那么咋搞呢? 方法有三种: 方法一:窗口-->重置窗口布局 ...
- python资源管理器选择文件_Python:在资源管理器中获取选定文件的列表(windows7)...
我知道现在在这里发布答案有点晚了,但我几个月前尝试过Olav的解决方案,但它没有完全起作用:工作目录是脚本的工作目录,所以我不得不删除if条件才能使其工作,但它选择了所有Windows资源管理器窗口中 ...
最新文章
- linux 安装 nodejs
- mysql 平均响应时间_Percona-Server/MySQL响应时间统计
- 计算机组成原理(哈工大刘宏伟)135讲(二)
- 微信开发系列之二 - 在微信公众号里开发一个自动应答的图灵机器人
- 亚信联创java面试题_亚信联创面试题及答案
- Oracle 中文排序
- syntaxhighlighter 代码高亮 - 插件化
- 为什么写了value属性 jq赋值value值不显示_为什么 String 要设计成 final,又如何设计一个不可变类呢?...
- Delphi 2010手动安装indy10.5.7
- Ubuntu安装Monaco字体
- Matlab 三角函数(sin)
- AMADA阿玛达触摸屏维修折弯机主机维修
- oracle查询某个时间段的数据
- Matlab论文插图绘制模板第28期—柱状图(带误差棒errorbar)
- 基于Linux centos7 搭建内网服务器,并通过外网访问
- Java可变参数的基本使用
- 第十一家面试(堆糖)
- 开源版本_开源绘画应用 Pinta 在 5 年后迎来新版本 | Linux 中国
- 面试题:1、H5+css
- matlab中函数imresize的使用介绍