当前位置:文档之家› 集成开发环境的配置及使用说明

集成开发环境的配置及使用说明

集成开发环境的配置及使用说明本文讲解如何编写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 NCoverNCover现有网上使用的主要有两个版本NCover3.1和NCover1.5.8,但由于后者是免费版本,所以本例中使用NCover1.5.8版本,下载地址如下:/download/community1.1.3 其它软件其它软件如下所示:NUnit 2.5.1FxCop 1.36HTML Help CompilerSandcastle 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 Workshop1.2 编写MSBuild脚本文件关于MSBuild的常用脚本元素之前已在《MSBuild的简单介绍与使用》中说过,这里就不再重复了,只针对每一功能的重要语句进行讲解,详情可以Redmine 项目管理的集成开发环境的配置中下载MyProj.proj文件进行查看。

1.2.1 编译系统脚本文件如下所示:<!-- Build the assemblies --><MSBuild Projects="@(TestProjects)"Targets="$(BuildTargets)"Properties="RunCodeAnalysis=$(RunCodeAnalysis)" ><Output TaskParameter="TargetOutputs"ItemName="CodeAssemblies"/></MSBuild>其中参数如下: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检查代码。

脚本如下:<!--使用FxCopCmd命令对项目进行编码管理--><Exec Command="FxCopCmd /project:@(FxCopFile) /out:$(DocFolder)\$(FxCopResults)"/> /project:@(FxCopFile)导入已生成好的.FxCop文件(FxCop文件的生成在后边的集成环境的使用项目准备中会详细讲解)/out:$(DocFolder)\$(FxCopResults)指定将要生成的FxCop结果文件1.2.3运行NUnit进行单元测试munity.Tasks中包含已编写好的NUnit任务,此处只要直接添加任务并配置参数即可,其中详细参数可以参看munity.Tasks自带的帮助文档,脚本文件如下所示:<NUnit Assemblies="@(CodeAssemblies)"ToolPath="$(NUnitPath)"WorkingDirectory="%(CodeAssemblies.RootDir)%(CodeAssemblies.Directory)"OutputXmlFile="@(TestProjects->'%(RootDir)%(Directory)bin\$(Configuration)\$(NUnitFile)')"ContinueOnError="true"><Output TaskParameter="ExitCode"ItemName="NUnitExitCodes"/></NUnit>Assemblies:导入MSBuild任务编译生成的结果(即项目的应用程序集)ToolPath:NUnit的安装路径WorkingDirectory:MSBuild任务编译生成的结果(即项目的应用程序集)所在的目录OutputXmlFile:指定输入的xml结果文件ContinueOnError:指如果出错后是否继续执行1.2.4运行NCover检查NUnit覆盖率因为NCover1.5.8版本不支持munity.Tasks中已编写好的NCover任务,所以只能用Exec任务来完成。

,NCove脚本文件如下:<!--使用exec任务加载ncover功能,注此处将ncover与nunit集成使用,以避免弹出项目应用程序--> <Exec Command="NCover.Console %22$(NUnitCmd)%22 /noshadow %22@(CodeAssemblies)%22 //l $(CodeCoverFolder)\$(NCoverLogFile) //x $(CodeCoverFolder)\$(NCoverFile)"/>因为单独使用NCover.Console命令执行会弹出项目应用程序集的对话框(如果有的话),所以此处与NUnit一块使用来避免(如果不阻止的话,后边在将编写好的MSBuild集成到ccnet时会发生超时退出,因为无法关闭项目应用程序集的对话框)。

%22$(NUnitCmd)%22:导入NUnit-console.exe命令The /noshadow option disables shadow copying of the assembly inorder to provide improved performance.%22@(CodeAssemblies)%22:导入MSBuild任务编译生成的结果(即项目的应用程序集)//l $(CodeCoverFolder)\$(NCoverLogFile):指定生成的coverage.log文件//x $(CodeCoverFolder)\$(NCoverFile):指定生成的结果文件coveragel.xml1.2.5运行SandCastle生成帮助文档因为没有编写好的SandCastle任务,所以此处仍然用Exec任务来集成,脚本文件如下:<!-- Build source code docs --><Exec Command="$(DOUBLE_QUOTES)$(MSBuildCmd)$(DOUBLE_QUOTES)$(DOUBLE_QUOTES)@(SandCastleHFBProject)$(DOUBLE_QUOTES)" />$(DOUBLE_QUOTES)$(MSBuildCmd)$(DOUBLE_QUOTES):导入MSBuildCmd命令$(DOUBLE_QUOTES)@(SandCastleHFBProject)$(DOUBLE_QUOTES):导入已生成好的.shfbproj文件(使用Sandcastle Help File Builder生成,后边详细讲解如何生成)。

1.2.6清除垃圾文件在任务结果时应该将中间生成的无用文件进行删除,如下所示:<!-- Create item collection of custom artifacts produced by the build --><CreateItem Include="@(TestProjects->'%(RootDir)%(Directory)bin\$(Configuration)\*$(NUnitFile)');@(TestProjects->'%(RootDir)%(Directory)bin\$(Configuration)\*$(LastTestRunSucceededFile)');@(TestProjects->'%(RootDir)%(Directory)bin\$(Configuration)\*.bkp')"><Output TaskParameter="Include"ItemName="SolutionOutput" /></CreateItem><!-- Delete all the solution created artifacts --><Delete Files="@(SolutionOutput)"/>先将无用的文件用CreatItem集合成一个Item,然后用Delete进行删除即可。

相关主题