版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
集成开发环境的配置及使用说明本文讲解如何编写MSBuild脚本文件执行编译系统、运行FxCop检查代码、运行NUnit以及NCover进行单元测试、运行SandCastle生成帮助文档四项功能,并如何在集成开发环境中使用。一、集成开发环境的配置工具软件准备MSBuild只要安装过VS2005或VS2008后,就可以是路径C:\WINDOWS\Microsoft.NET\Framework中看到MSBuild的三人版本,本例中使用V3.5。另外还得从下面的网站下载一个MSBuild.Community.Tasks.msi文件,里面有MSBuild的已经编写好的各种任务。下载地址如下:/NCoverNCover现有网上使用的主要有两个版本NCover3.1和NCover1.5.8,但由于后者是免费版本,所以本例中使用NCover1.5.8版本,下载地址如下:/download/community其它软件其它软件如下所示:NUnit2.5.1FxCop1.36HTMLHelpCompilerSandcastleHelpFileBuilderv以上包括1.1.1和1.1.2的软件均可在Redmine项目管理的集成开发环境的配置的文件管理中下载,此处就不一一给链接了。下载后均按默认安装即可。但因为要在命令行中使用MSBuild和FxCopcmd命令,所在在环境变量Path中加入:C:\WINDOWS\Microsoft.NET\Framework\v3.5;C:\ProgramFiles\MicrosoftFxCop1.36;另外再增加两个新变量:DXROOTC:\ProgramFiles\Sandcastle和HHCEXEC:\ProgramFiles\HTMLHelpWorkshop1.2编写MSBuild脚本文件关于MSBuild的常用脚本元素之前已在《MSBuild的简单介绍与使用》中说过,这里就不再重复了,只针对每一功能的重要语句进行讲解,详情可以Redmine项目管理的集成开发环境的配置中下载MyPj文件进行查看。1.2.1编译系统脚本文件如下所示:<!--Buildtheassemblies--><MSBuildProjects="@(TestProjects)"Targets="$(BuildTargets)"Properties="RunCodeAnalysis=$(RunCodeAnalysis)"><OutputTaskParameter="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检查代码在MSBuild.Community.Tasks中本来有编译好的FxCop任务,但此处由于FxCop版本问题,不能使用,故仍使用MSBuild的Exec任务来集成FxCop检查代码。脚本如下:〈!一使用FxCopCmd命令对项目进行编码管理一〉<ExecCommand="FxCopCmd/project:@(FxCopFile)/out:$(DocFolder)\$(FxCopResults)"/>/project:@(FxCopFile) p文件(FxCop文件的生成在后边的集成环境的使用项目准备中会详细讲解)/out:$(DocFolder)\$(FxCopResults)指定将要生成的FxCop结果文件1.2.3运行NUnit进行单元测试MSBuild.Community.Tasks中包含已编写好的NUnit任务,此处只要直接添加任务并配置参数即可,其中详细参数可以参看MSBuild.Community.Tasks自带的帮助文档,脚本文件如下所示:<NUnitAssemblies="@(CodeAssemblies)"ToolPath="$(NUnitPath)"WorkingDirectory="%(CodeAssemblies.RootDir)%(CodeAssemblies.Directory)"OutputXmlFile="@(TestProjects->'%(RootDir)%(Directory)bin\$(Configuration)\$(NUnitFile)')"ContinueOnError="true"><OutputTaskParameter="ExitCode"ItemName="NUnitExitCodes"/></NUnit>Assemblies 任务编译生成的结果(即项目的应用程序集)ToolPath:NUnit的安装路径WorkingDirectory:MSBuild任务编译生成的结果(即项目的应用程序集)所在的目录OutputXmlFile:指定输入的xml结果文件ContinueOnError指如果出错后是否继续执行124运行NCover检查NUnit覆盖率因为NCover1.5.8版本不支持MSBuild.Community.Tasks中已编写好的NCover任务,所以只能用Exec任务来完成。NCove脚本文件如下:<!―使用exec任务加载ncover功能,注此处将ncover与nunit集成使用,以避免弹出项目应用程序一><ExecCommand="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/noshadowoptiondisablesshadowcopyingoftheassemblyinordertoprovideimprovedperformance.%22@(CodeAssemblies)%22:导入MSBuild任务编译生成的结果(即项目的应用程序集)//l$(CodeCoverFolder)\$(NCoverLogFile):指定生成的coverage-log文件//x$(CodeCoverFolder)\$(NCoverFile):指定生成的结果文件COVeragel.Xml运行SandCastle生成帮助文档因为没有编写好的SandCastle任务,所以此处仍然用Exec任务来集成,脚本文件如下:<!--Buildsourcecodedocs--><Exec Command="$(DOUBLE_QUOTES)$(MSBuildCmd)$(DOUBLE_QUOTES)$(DOUBLE_QUOTES)@(SandCastleHFBProject)$(DOUBLE_QUOTES)"/>$(DOUBLE_QUOTES)$(MSBuildCmd)$(DOUBLE_QUOTES):导入MSBuildCmd命令$(DOUBLE_QUOTES)@(SandCastleHFBProject)$(DOUBLE_QUOTES):导入已生成好的.shfbproj文件(使用SandcastleHelpFileBuilder生成,后边详细讲解如何生成)。清除垃圾文件在任务结果时应该将中间生成的无用文件进行删除,如下所示:<!--Createitemcollectionofcustomartifactsproducedbythebuild--><CreateItemInclude="@(TestProjects->'%(RootDir)%(Directory)bin\$(Configuration)\*$(NUnitFile)');@(TestProjects->'%(RootDir)%(Directory)bin\$(Configuration)\*$(LastTestRunSucceededFile)');@(TestProjects->'%(RootDir)%(Directory)bin\$(Configuration)\*.bkp')"><OutputTaskParameter="Include"ItemName="SolutionOutput"/></CreateItem><!--Deleteallthesolutioncreatedartifacts--><DeleteFiles="@(SolutionOutput)"/>先将无用的文件用CreatItem集合成一个Item,然后用Delete进行删除即可。二、集成开发环境的使用本集成环境的文件结构目录如下所示:地址⑪I已E地址⑪I已E:\ccnet\456文件夹HQccnet®£33fl□ 456田冠》codei王;.詮Documen.ta£iwi.0亡)其它文件0lH)6T8'E,巴loj.codec-msbuild.cmdWindQWE町命令脚本1KB3server_msbui1d.cmdWindow?町命哮■脚本口其它文件其中e:ccnet为ccnet的工作目录,456为其中的一个工程目录,code里存放所有的代码,此目录与SVN服务器保存的代码进行同步,Documentation目录下存放生成好的各项结果文件。2.1新建项目(项目准备)打开VS2008新建一个项目(此处项目命名为msbtest),添加一个新测试类class1,代码如下:usingSystem;usingSystem.Collections.Generic;usingSystem.Linq;usingSystem.Text;usingNUnit.Framework;namespaceMSBuildTest{[TestFixture]classClass1{privateinta;privateintb;[SetUp]publicvoidInitializeOperands(){a=1;b=2;}[Test]publicvoidAddTwoNumbers(){intsum=a+b;Assert.AreEqual(sum,3);}[Test]publicvoidMultiplyTwoNumbers(){intproduct=a*b;本文内容主要来源于互联网,文中已尽量引用出处,但仍有疏忽遗漏之处,请原创作者见谅。Assert.AreEqual(2,product);}}}Class1主要为测试NUnit和NCover用,可以根据实际需要添加。另需在References中添加nunit.framework。在c#项目中鼠标右键点击所选的项目,在显示的菜单中选择Properties选项,打开PropertiesPage,鼠标左键点击Build项,在显示的页面中勾选XMLdocumentationfile。如下图所示:FlaOutputpath_!AllowunsafecodeBuild|RegietelforCOMinterof召XMLdocmentationfile:RescnircesWarninglevelServicesSecurityOutputbirADebug\msbtest.XMLGenerateserialitionassembly:AppliwtionBuildEventsDebugSettingsTreatwat'ningsaserrorsReferenceF包thsSigningAllPublishbin\Detnig\FlaOutputpath_!AllowunsafecodeBuild|RegietelforCOMinterof召XMLdocmentationfile:RescnircesWarninglevelServicesSecurityOutputbirADebug\msbtest.XMLGenerateserialitionassembly:AppliwtionBuildEventsDebugSettingsTreatwat'ningsaserrorsReferenceF包thsSigningAllPublishbin\Detnig\Browse...Configuration.:JOjitimiz^ecodeErrorsandwai'ningsG)HoneOSpecificw^'nings:Active(AnyCPU)Acti辛电ijebug)AutoAdvanced...一般新建项目后,均会在vs2008的默认路径中的Projects中保存一个解决方案文件和一个同名代码目录,如下图所示:点选解决方案,然后在file->savemsbtest.slnas…将项目解决方案文件另存在同名代码目录中,这样做一方面在之后与SVN同步时不容易出错,另一方面便于在msbuild脚本文件中对文件目录进行控制。最后再编译运行一次即可。然后将所本环境所提供的test文件夹放至E:\ccnet目录下,将test目录重新命名为msbtest,然后把上面所说的同名代码目录文件夹中的所有文件复制到E:\ccnet\msbtest的code目录下。如下图所示:后A搜索文件夹后A搜索文件夹文件迥编辑⑥查看边收藏迦工冥①帮助⑩地址 I寸E:\ccnet\msbtest\code田田i+i一田日兰件 x国Obaby日心ccnet3.1456678logmsbteEt田田i+i一田日兰件 x国Obaby日心ccnet3.1456678logmsbteEt□l一/code®因bin田词obj员Properti苗田—Il口匚ijiiientationio苴它文件13Otest田亡I复件msbtest0OHSOCacheDocumentsVisu:ilI二#Som-ce.1KBmzbtEzt.sin.cacheCACHE文件16KEmmbteEt.csprojViEU:dlC#Fruiec6KBVisu:ilC#5nm-ce.c#_lohjForml.csVisu:±lC#Sijiifize..1KBmsbteEt.csproj.userVisualStudioFr..1KEgmEbtest.sin.FxCopMicrosijftFkCop'5KBForml.I<esigjier.csCy__Visu:ilC#Source...z=2KBmsbteEt.sinMicrosoftVieu:=l1...舅Version:Vieu:=l1..msbtw£t.euo二ViEu:ilStudioSo...电13KB2.1.1生成.FxCop文件若第一次使用FxCop,请先在vs2008中ExternalTools添加FxCop,方法女口下:InVisualStudioselectTools-〉ExternalTools・・YoushouldseetheExternalToolsdialogbox.Youmustfillfollowingfields:Title: FxCopCommand: C:\ProgramFiles\MicrosoftFxCop1.36\FxCopCmd.exeArguments: /c/p:"$(SolutionDir)\$(SolutionFileName).fxcop" /cXsl:"C:\ProgramFiles\MicrosoftFxCop1.36\Xml\VSConsoleOutput.xsl"InitialDirectory: C:\ProgramFiles\MicrosoftFxCop1.36Useoutputwindow MustbecheckedIfyouinstallFxCopindifferentlocationthanC:\ProgramFiles\MicrosoftFxCop1.36,youneedtouseyourownpath.
这个就是我们增加以后的内容:TargetsRules|Incaseyouwanttogroktheswitchesweuse,youcanreadmoreaboutFxCopCmdoptions这个就是我们增加以后的内容:TargetsRules|Incaseyouwanttogroktheswitchesweuse,youcanreadmoreaboutFxCopCmdoptions.然后打开FxCopGUI界面,在MyFxCopProject中通过”AddTargets”添加E:\ccnet\msbtest\code\bin\Debug下的要分析应用程序集,如下图所示:曰回圉WyFxCupFrojectDJiriit..£r:=uriework.>111e-H-omsbexe设置Targets以后,可以选定需要的规则,我们一般不需要Globalization和Security的规则,所以可以从规则库中将两者去除。
TargetsRulesTargetsRulesMyFxCopProject+PlDesignRules+|~|.:•GlobalizationRulesInteroperabilityRules+Pl.::MobilityRulesNamingRulesS-0C8PerformanceRules軒回滋PortabilityRules+|~|.::SecurityRuless-0^UsageRules然后将项目文件保存至解决方案文件所在的目录下,并且保存名称为解决方案全称加“.FxCop”本例中为msbtest.sln.FxCop,如下图所示:这样即可在vs2008中通过Tools->FxCop直接检测,也可以在后续集成至MSBuild中时使用msbtest.sln.FxCop文件。生成.shfbpro文件打开SandcastleHelpFileBuilder,新建一个工程,名称随便,本例仍为msbtest。在DocumentationSources中添加E:\ccnet\msbtest\code\msbtest.sln文件,在Referencesk中把项目中所引用到的dll文件(nunit.framework)加载进去,之后在左侧ProjectProperties按下列进行配置:设置FrameworkVersion为3.5设置HtmlHelp1xCompilerPath为HTMLHelpWorkshop的安装路径设置SandcastlePath为Sandcastle的安装路径保存该项目后点击Namespaces按钮,选中想要生成帮助文档的Namespace然后将项目保存至E:\ccnet\msbtest\Documentation\Help路径下,文件名为msbtest.shfbproj(其实此处文件名可以随意,因为在MSBuild中集成时是自动匹配此路径下的.shfbproj文件)。使用集成环境执行检测编辑E:\ccnet\msbtest\c-msbuild.cmd,将原文件修改为:MSBuildE:\ccnet\msbtest\MyPjpause最后双击c-msbuild.cmd即可执行,执行结果如下所示编译结果:i^uildstar2B09—9-123:22:&7Project"E:\ccnetSnsbtesj.pvoj!'onnodeQ<defaulttargeProject"E:\ccnet\risbtest\MyPp&j,proj"<1>isbuilding"E:\ccnetMishtestMCod已Xrt?ibtest.sin"<2>vnnodeQ(BuildtargetCs>>.Buildingsolutionconfiguration"Debug!AnyCPU".Project \ccnetSnsbtest\CodeSjisbtest..sln"<2>isbuildingUE:\ccnetSnsbtest\CodeMisbtest.csproj"<3>onnodeQ<defaulttargets>MHoresourcesareoutofdateuithrespecttotheirsourcefiles.SkippingresourcegenEFRtion.CoreCGsnpile:Skippingtarget',CoreCoFipileMbecausealloutputfilesareup-to-datew土threspecttotheinputfiles.GopyFilesTsOutputDirectnry:msbtest->Ei\ccnetXmsbtest\Code\bin\DebugXmsbtestFexeDrmeBuildingProjectUE:\ccnet\nshtest\Code\nsbtest.csproj"<defaulttargets>.Dr.meBuildingProject"E=\ccn亡tSnght亡st\CodeMiEht亡召t-:sln"<BuildtargeFxcop^uildCudeiMicrosoft<R>FxG^pCommand-LineTao1,Uersl^n1.36<9 .36729.!>Copyright<C>2H07MicrosoftCorporation.fillrightsreserued..LoadingE:\ccnetXnwbtegtSudeXnshtegt.sin.FxCop...LeadedDesignRules;dll...LeadedGlobalizatirrnRules.dll...LeadedInteroperabilityRules;dll...LoadedMobiliti/Rules.dll...LoadedNaningRulesPdll...LoadedPerformanceRules.dll...LeadedPortabilityRules.dll...LeadedSecuriti/Rules.dll...LoadedUsageRules„dll...InitializingIntrospectionengineP.Anali/sing...AnalysisCynpleteWriting599messages...WritingreporttoE:\ccnet\nsbfcest\Documentati^nVFxCopResults.xml.Done.FxCopResults:E:\ccnetXnsbtest^Docunentation'KFxGopResuits.xmlNunitTest:RunningTestsfor:msbtestDeletingfile,PE:\ccnet\msbtest\Code\bin^DebugSmsbtest.exe.LastTestRunSucceeded".ProcessModeliDefaultDomainUsage-SingleExecutionRuntime-net-2.0.50727,1433■■Testsruni2,Errorsi0,Failuresi0,Inconclusive-0,Time-0.03125secondsNotruni0,Invalid:0,Ignored:0,Skipped:0NUni.tResults:Es\ccnet\nsbtest\Code\bin\Debug\nsbtest.exe.TestResuit.xmlNcoverCodeCouerage'RunningCodeCoueragefor:msbtestNCouer.Consoleu1.5.8-CodeCouerageAnali/s:.sfor.NET-Copyright<c>2S04-2&506PeterUaldschmidtCommand:C:XProgramFilesM'IUnit2-5.l\binMiet-2.0^nunit-console.exeCommandArgs-"Znoshadow^ME:\ccnet^nsbtest\Code\bin\Debug\msbtest.exe'(UorkingDirectory:Assenblies:CouerageXml:E.-\ccnet\msbtest\Documentation\CodeCouep\Couepage.xmlCouerageLog:E.-\ccnet\msbtest\Documentation\CodeCouep\Couepage.logUnitingforprofiledapplicationtoconnect...ConnectedConfiguringProfiler...jcjcjcjcjcjcjcjcjcjcjcjcjcjcjcjcjcEndPpogpanOutput黄坯黄坯黄坯黄坯黄坯黄坯黄坯黄坯黄CopyingfilefromMC:XProgranFilesSHCoue
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 二零二五版国际贸易合同履行中的知识产权保护协议2篇
- 中医学徒师承合同模板(2024年版)版B版
- 二零二五年生物制药技术合同认定与登记服务协议3篇
- 2025年度二零二五年度商业综合体摊位租赁服务协议3篇
- 二零二五版信息技术企业股权托管与产业协同协议3篇
- 2025年度城市排水系统改造与安装服务合同3篇
- 2025年度智能停车设施运营管理合同范本2篇
- 二零二五版出租汽车行业驾驶员劳动合同标准文本3篇
- 2024手绘墙绘艺术作品展览与推广合同3篇
- 2024离婚彩礼退还与财产分割争议解决执行服务协议3篇
- 大型活动联合承办协议
- 工程项目采购与供应链管理研究
- 2024年吉林高考语文试题及答案 (2) - 副本
- 拆除电缆线施工方案
- 搭竹架合同范本
- Neo4j介绍及实现原理
- 焊接材料-DIN-8555-标准
- 工程索赔真实案例范本
- 重症医学科运用PDCA循环降低ICU失禁性皮炎发生率品管圈QCC持续质量改进成果汇报
- 个人股权证明书
- 医院运送工作介绍
评论
0/150
提交评论