在 Visual Studio 的解决方案资源管理器中隐藏一些文件

栏目: 编程工具 · 发布时间: 6年前

内容简介:项目文件中有一些属性几乎是专门为 IDE 而准备的,不过考虑到 .NET 生态的开发者多数都使用 Visual Studio,所以基本上也只有 Visual Studio 对这些特性支持的最全面。(才不会透漏这些属性其实本就是为 Visual Studio 而准备的呢。)本文将介绍如何在 Visual Studio 的解决方案资源管理器中隐藏一些文件。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>

好了,任务完成,全文结束!

要是只有这样,我才不会写这篇文章呢!

原生不支持

在 Visual Studio 的解决方案资源管理器中隐藏一些文件

考虑一下像上图那样有些文件在文件夹中的情况,然后我们再次设置 Visible="false" 属性:

在 Visual Studio 的解决方案资源管理器中隐藏一些文件

文件夹竟然还在!这是 Visual Studio 的 Bug 吗?

还真是,至少在 Visual Studio 的项目系统中就有这样的 Issue 处于打开的状态:

回复是:

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>

这样,引入这些文件就是通过在编译时才引入的。没有开始编译时,项目中自然看不见。

在 Visual Studio 的解决方案资源管理器中隐藏一些文件

如果这样的例子发生在制作的 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" 也未尝不可。

比较复杂的情况可能比如:

参考资料

本文会经常更新,请阅读原文: https://walterlv.github.io/post/make-items-invisible-in-vs-solution-explorer.html ,以避免陈旧错误知识的误导,同时有更好的阅读体验。

在 Visual Studio 的解决方案资源管理器中隐藏一些文件 本作品采用 知识共享署名-非商业性使用-相同方式共享 4.0 国际许可协议 进行许可。欢迎转载、使用、重新发布,但务必保留文章署名 吕毅 (包含链接: https://walterlv.github.io ),不得用于商业目的,基于本文修改后的作品务必以相同的许可发布。如有任何疑问,请 与我联系


以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持 码农网

查看所有标签

猜你喜欢:

本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们

微信小程序

微信小程序

牛建兵 / 清华大学出版社 / 2017-9-1 / 49.00

微信小程序从满城风雨到掀起创业热潮,再到一直不断地迭代更新,其每一次更新都会增加新能力,让使用变得越来越方便,同时也增加一批进军小程序的队伍。微信小程序作为现在互联网中的热点,它给创业者、投资者、程序员带来了福音。对创业者来说,小程序能大大降低他们的创业成本,同时也降低了投资者的投资风险。 本书注重实战,通过具体的案例分析,讲解微信小程序的市场状况、人员分工、小程序需求设计、小程序体验设计、......一起来看看 《微信小程序》 这本书的介绍吧!

URL 编码/解码
URL 编码/解码

URL 编码/解码

XML、JSON 在线转换
XML、JSON 在线转换

在线XML、JSON转换工具

XML 在线格式化
XML 在线格式化

在线 XML 格式化压缩工具