Visual Studio 2008 可扩展性开发(五):操作Solution、Project和ProjectItem

前言 

说真的,前面几篇随笔读起来会很乏味,写起来更是如此。不过好戏总在后头,从这一篇开始我将介绍在Add-In中对VS的各个元素进行操作,这些会有意思得多。 

大多数时候,我们在VS中进行开发,都是从打开解决方案开始,然后找到项目、打开文件进行开发。本文将介绍与此相关的内容。 

解决方案、项目和项简介

我相信,这三者对我们.NET开发人员来说是再熟悉不过的了。但它们在AOM(自动化对象模型)的表示方式跟我们想象的会不太一样。看下面的图1,其中涉及的主要元素有解决方案、解决方案文件夹、项目、文件夹、文件。AOM通过Solution接口表示解决方案;Project接口表示解决方案文件夹和项目;ProjectItem接口表示文件夹和文件。下面我会通过一个例子来介绍它们。 

简单的代码生成器  

在实际开发中,我们往往需要采用一些特定的技术方案,这些方案就决定了程序的整体架构,表现在程序中就是一些项目、程序集、配置文件的组织。曾经有段时间很喜欢iBATIS.NET,这里就以它的示例项目NPetshop为例进行演示。NPetshop的基本结构如下: 

npetshop-arch 

图1:NPetshop的程序结构 

它的代码可以在NPetshop Source for .NET 2.0一文中找到。External-bin里面是所需要的各个程序集,Domain是实体类,Persistence是数据访问层,Service是业务逻辑层,Presentation是表现逻辑层,Web则负责最终的表现。如果要采用这样的解决方案进行开发,那么在项目开始我们就得花些时间来搭建整个解决方案的框架。通过Add-In,我们可以做到“一次编写,多次使用”。

现在来看看如何从零开始创建一个解决方案。在本例中,大致过程是:

npetshop

图2:解决方案创建过程

下面就来一步步实现。

0)添加命令

在之前的随笔已经向NEnhancer添加了两个命令了,现在需要添加新的命令,这样重复代码又得多一些了,所以在添加命令之前,先将代码重构一下,提取出几个小方法:

C# Code - Connect类的辅助方法
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
`textTransformation` 是 T4 模板中的一个对象,它表示正在转换的模板本身。通过该对象,你可以访问模板中定义的属性和方法,以及生成输出文本。 在 T4 模板中,你可以通过以下方式访问 `textTransformation` 对象: ```csharp <#@ template language="C#" #> <#@ output extension=".txt" #> <# // 访问 textTransformation 对象的示例 textTransformation.WriteLine("Hello, world!"); #> ``` 在上面的示例中,`textTransformation` 对象的 `WriteLine` 方法用于输出 `"Hello, world!"` 到文本文件中。 你也可以将 `textTransformation` 对象传递给其他类或方法,以便它们可以访问模板中定义的属性和方法。例如,可以将 `textTransformation` 对象传递给生成的 DbContext 类的构造函数,以便它可以访问模板中定义的属性和方法。 ```csharp public partial class MyDbContext : DbContext { private readonly EnvDTE.ProjectItem projectItem; private readonly TextTransformation textTransformation; public MyDbContext(string nameOrConnectionString, EnvDTE.ProjectItem projectItem, TextTransformation textTransformation) : base(nameOrConnectionString) { this.projectItem = projectItem; this.textTransformation = textTransformation; } // ... } ``` 在上面的示例中,`MyDbContext` 类的构造函数接受三个参数:`nameOrConnectionString`、`projectItem` 和 `textTransformation`。`textTransformation` 对象将传递给 `MyDbContext` 类,以便它可以在必要时访问模板中定义的属性和方法。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值