集成开发环境的配置及使用说明
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
集成开发环境的配置及使用说明
本文讲解如何编写MSBuild脚本文件执行编译系统、运行FxCop检查代码、运行NUnit以及NCover进行单元测试、运行SandCastle生成帮助文档四项功能,并如何在集成开发环境中使用。
一、集成开发环境的配置
1.1 工具软件准备
1.1.1 MSBuild
只要安装过VS2005或VS2008后,就可以是路径C:\WINDOWS\\Framework中看到MSBuild的三人版本,本例中使用V3.5。另外还得从下面的网站下载一个munity.Tasks.msi文件,里面有MSBuild的已经编写好的各种任务。下载地址如下:
/
1.1.2 NCover
NCover现有网上使用的主要有两个版本NCover3.1和NCover1.5.8,但由于后者是免费版本,所以本例中使用NCover1.5.8版本,下载地址如下:/download/community
1.1.3 其它软件
其它软件如下所示:
NUnit 2.5.1
FxCop 1.36
HTML Help Compiler
Sandcastle Help File Builder v 1.8.0.2
以上包括1.1.1和1.1.2的软件均可在Redmine项目管理的集成开发环境的配置的文件管理中下载,此处就不一一给链接了。下载后均按默认安装即可。但因为要在命令行中使用MSBuild和FxCopcmd命令,所在在环境变量Path中加入:
C:\WINDOWS\\Framework\v3.5;
C:\Program Files\Microsoft FxCop 1.36;
另外再增加两个新变量:
DXROOT C:\Program Files\Sandcastle和
HHCEXE C:\Program Files\HTML Help Workshop
1.2 编写MSBuild脚本文件
关于MSBuild的常用脚本元素之前已在《MSBuild的简单介绍与使用》中说过,这里就不再重复了,只针对每一功能的重要语句进行讲解,详情可以Redmine 项目管理的集成开发环境的配置中下载MyProj.proj文件进行查看。
1.2.1 编译系统
脚本文件如下所示:
Targets="$(BuildTargets)" Properties="RunCodeAnalysis=$(RunCodeAnalysis)" >
其中参数如下:
Projects:必选的ITaskItem[] 参数。指定要生成的项目文件。
Properties:可选的String 参数。以分号分隔的属性名称/值对列表,这些属性名称/值对将作为全局属性应用于子项目。当使用MSBuild.exe 生成项目时,指定此参数在功能上等效于设置具有/property 开关的属性。例如:Properties ="Configuration=Debug;Optimize=$(Optimize)"
通过Properties 参数向项目传递属性时,即使已加载项目文件,MSBuild 也会创建该项目的一个新实例。创建项目的新实例后,MSBuild 会将其视为具有不同的全局属性并且可与该项目的其他实例并行生成的不同项目。例如,“发布”配置可与“调试”配置同时生成。
Targets:可选的String 参数。指定要在项目文件中生成的一个或多个目标。使用分号分隔目标名称列表。如果MSBuild 任务中未指定目标,将会生成项目文件中指定的默认目标。
Output元素的参数含义如下:
TaskParameter:必需。任务输出参数的名称。
PropertyName:PropertyName 或ItemName 属性是必需的。接收任务输出参数值的属性。此后,项目可以使用$(PropertyName) 语法引用该属性。此属性名称可以是新的属性名称,也可以是已经在项目中定义的名称。如果ItemName 还在使用,则不能使用此属性。
ItemName:PropertyName 或ItemName 属性是必需的。接收任务输出参数值的项。此后,项目可以使用@(ItemName) 语法引用该项。该项的名称可以是新的项名称,也可以是已经在项目中定义的名称。如果PropertyName 还在使用,则不能使用此属性。
1.2.2运行FxCop检查代码
在munity.Tasks中本来有编译好的FxCop任务,但此处由于FxCop版本问题,不能使用,故仍使用MSBuild的Exec任务来集成FxCop检查代码。脚本如下:
/out:$(DocFolder)\$(FxCopResults)指定将要生成的FxCop结果文件
1.2.3运行NUnit进行单元测试
munity.Tasks中包含已编写好的NUnit任务,此处只要直接添加任务并配置参数即可,其中详细参数可以参看munity.Tasks自带的帮助文档,脚本文件如下所示:
ToolPath="$(NUnitPath)" WorkingDirectory="%(CodeAssemblies.RootDir)%(CodeAssemblies.Directory)" OutputXmlFile="@(TestProjects->'%(RootDir)%(Directory)bin\$(Configuration)\$(NUni tFile)')" ContinueOnError="true">
Assemblies:导入MSBuild任务编译生成的结果(即项目的应用程序集)
ToolPath:NUnit的安装路径
WorkingDirectory:MSBuild任务编译生成的结果(即项目的应用程序集)所在的目录
OutputXmlFile:指定输入的xml结果文件
ContinueOnError:指如果出错后是否继续执行
1.2.4运行NCover检查NUnit覆盖率
因为NCover1.5.8版本不支持munity.Tasks中已编写好的NCover任务,所以只能用Exec任务来完成。,NCove脚本文件如下:
因为单独使用NCover.Console命令执行会弹出项目应用程序集的对话框(如果有的话),所以此处与NUnit一块使用来避免(如果不阻止的话,后边在将编写好的MSBuild集成到ccnet时会发生超时退出,因为无法关闭项目应用程序集