在VS中通过建立依赖关系使文件结构更清晰
目录
一、文件依赖达到的效果
二、文件依赖关系定义在Project文件中
三、通过VS插件建立两个文件之间的依赖关系
一、文件依赖达到的效果
对于项目文件之间的依赖关系,包含HTML的.aspx文件和包含Code Behind的.cs(或者.vb)文件是我们遇到的最为常见的表现形式。实际上还有其他的表现形式,比如资源文件(.resx文件)和自动生成的代码文件,Windows窗体文件和基于该窗体的资源文件(.resx)等。在创建这些文件的时候,VS会默认为你创建一套具有依赖关系的文件。
除了这种VS自动支持的文件依赖之外,有的时候我们需要手工为添加在同一个目录下的两个文件建立依赖关系。比如如果我们采用MVP模式进行开发的时候,建立一个View的时候,往往需要为之创建一个Presenter。在默认的情况下,View和Presenter在VS中处于同一个级别,如果能够建立起它们之间的依赖关系,让Presenter文件嵌套在View文件下,在结构上将显得更加清晰(如左图所示)。
再举一个例子,在《如何让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重构了之前的代码。
相关文章
- 【VS开发】【计算机视觉】OpenCV读写xml文件《C++版本》
- 【VS开发】cmd dos 批处理重命名文件
- 【VS开发】内存映射文件3
- 【VS开发】内存映射文件3
- 【VS开发】文件共享内存2
- 【VS开发】内存映射文件进程间共享内存
- 删除oracle trace文件
- Web API与文件操作
- Lighting.cginc文件
- C++读写文件并排序
- springmvc 文件下载 VS resteasy 文件上传下载
- 使用Gnupg对Linux系统中的文件进行加密
- 【Rust】使用库文件
- 批处理清理VS工程目录(递归删除Debug, Release, ipch目录及*.sdf文件)
- VS中,打开文件时自动定位到目录树中
- 【7】vscode不同的窗口样式和颜色插件peacock、设置打开多个窗口、md文件打开方式和预览以及插入目录
- VS报错已加载“C:WindowsSystem32WinTypes.dll”。无法查找或打开 PDB 文件 & qt project settings无法点击
- 使用Protobuf文件一键生成Java类
- 安装vs code之后,win+e快捷键打开的是vs code,而不是文件管理器,解决方法
- Linux 文件权限和访问模式(Read、Write、Execute)
- 2019-8-31-dotnet-控制台读写-Sqlite-提示-no-such-table-找不到文件
- Unity新建项目后打开脚本VS显示为杂项文件(项目文件夹下没有sln文件)的解决方法
- ASP.NET Core 开发-Logging 使用NLog 写日志文件