zl程序教程

您现在的位置是:首页 >  其他

当前栏目

在VS中通过建立依赖关系使文件结构更清晰

文件vs依赖 通过 结构 关系 建立 清晰
2023-09-27 14:27:56 时间
Xxx.aspx.cs和Xxx.aspx.designer.cs,后面两个文件(依赖文件)依赖于第一个文件(主文件)。依赖文件嵌套在主文件下,在结构上看起来非常的清晰。那么你是否可以把存在于同一个目录下的两个相关的文件也建立这种依赖关系呢?

目录
一、文件依赖达到的效果
二、文件依赖关系定义在Project文件中
三、通过VS插件建立两个文件之间的依赖关系

 

一、文件依赖达到的效果

对于项目文件之间的依赖关系,包含HTML的.aspx文件和包含Code Behind的.cs(或者.vb)文件是我们遇到的最为常见的表现形式。实际上还有其他的表现形式,比如资源文件(.resx文件)和自动生成的代码文件,Windows窗体文件和基于该窗体的资源文件(.resx)等。在创建这些文件的时候,VS会默认为你创建一套具有依赖关系的文件。

image除了这种VS自动支持的文件依赖之外,有的时候我们需要手工为添加在同一个目录下的两个文件建立依赖关系。比如如果我们采用MVP模式进行开发的时候,建立一个View的时候,往往需要为之创建一个Presenter。在默认的情况下,View和Presenter在VS中处于同一个级别,如果能够建立起它们之间的依赖关系,让Presenter文件嵌套在View文件下,在结构上将显得更加清晰(如左图所示)。image

再举一个例子,在《如何让ASP.NET默认的资源编程方式支持非.ResX资源存储》一文中,我提供了一种通过自定义ResourceProvider让ASP.NET默认的资源编成模式支持不同形式的资源存储形式。现在我们为了实现本地化的需要,需要为每一个.aspx创建基于不同语言文化的资源文件,假设我们采用XML文件。如果我们能够让这些资源文件作为.aspx文件的依赖文件,那么它们显示在Solution Explorer中就会呈现出一种层级关系,看起来会显得结构清晰(如右图所示)。

具有依赖关系的文件之间除了显示效果之外还具有一些额外的属性,比如当你删除主文件的时候,所有的依赖文件都会自动被删除;当你使用TFS作为Source Control的时候,签出主文件的同时也会将所有依赖文件全部签出。

二、文件依赖关系定义在Project文件中

在目录结构来讲,主文件和依赖文件处于相同的层级,它们的依赖关系实际上是通过Project文件(.csproj文件或者.vbproj文件)来定义的。Project文件本质上就是一个XML文件,所有包含在项目中的文件在 ItemGroup 元素下具有一个子元素。一般来说,需要编译的文件(比如.cs或者.vb文件)以一个 Compile/ 元素表示,其它的则表示成 Content/ 元素。而某个文件具体依赖于哪个文件,通过子元素 DependentUpon/ 定义。比如说针对上图所示的文件结构,三个资源文件(Default.aspx.xml、Default.aspx.en-US.xml和Default.aspx.zh-CN.xml)以来于Default.aspx,这样的依赖关系体现在如下所示的Project文件中。

 1: ?xml version="1.0" encoding="utf-8"? 

 2: Project ToolsVersion="4.0" DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003" 

换句话说,如果你需要两个文件具有依赖创建,通过修改对应.csproj文件(或者.vbproj文件)完全可以达到你的目的。但是这样的方式在操作性上是极不方便的,那么是否具有更好的方法呢?

三、通过VS插件建立两个文件之间的依赖关系

实际上,关于方便建立两个项目文件之间的依赖关系,网上有很多开源的VS插件。如果你对VS扩展开发比较熟悉,你甚至可以自己开发。由于我对此一窍不通,所以只能寻找现有的工具,我发现有一款叫作IStaySharp.CreateDependency的工具不错。IStaySharp.CreateDependency提供了一个VS宏,你将它加载到VS中,基于此创建对应的工具栏命令。然后再Solution Exploror选择两个项目文件,点击该工具栏按钮即可。这个VS宏文件你可以通过这里直接下载,这里还提供一个很短的视频为你展示了相关的安装、使用过程。

作者:蒋金楠
微信公众账号:大内老A
微博:www.weibo.com/artech
如果你想及时得到个人撰写文章以及著作的消息推送,或者想看看个人推荐的技术资料,可以扫描左边二维码(或者长按识别二维码)关注个人公众号(原来公众帐号蒋金楠的自媒体将会停用)。
本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利。 原文链接

代码改动和配置文件相分离 因为我们支持的字段可能会发生变化,为了避免因为这些变化导致我们频繁调整代码,我把所有字段的全集和每个网站支持的字段都放到配置文件里了。 Backend仓库下有个配置文件koiFieldList.xml, 存放的是支持字段的全集。 我会写一个API,将这个文件的内容暴露出来。
程序命名的原则与重构 命名是对事物本质的一种认知探索,是给读者一份宝贵的承诺。糟糕的命名会像迷雾,引领读者走进深渊;而好的命名会像灯塔,照亮读者前进的路。命名如此美妙,本文将一步步揭开它的神秘面纱!
官网:https://antv.alipay.com/zh-cn/g6/1.x/index.html注意:此教程基于1.x版本官方已更新到2.x,2.x重构了之前的代码。