wap网站不流行,免费驾校网站模板,php网站开发过程考试,网站图片幻灯片效果在上一篇浅谈.NET编译时注入(C#--IL)中我们简单的反编译查看了几种c#语法糖和PostSharp在编译成IL时为我做的MSIL注入。紧接着在这节#xff0c;要来看的就是MSBuild Task。在我们的代码预编译过程中我们可以创建我们自己的任务Task。下面我们就开始做一个简单的Task。1IL)中我们简单的反编译查看了几种c#语法糖和PostSharp在编译成IL时为我做的MSIL注入。紧接着在这节要来看的就是MSBuild Task。在我们的代码预编译过程中我们可以创建我们自己的任务Task。下面我们就开始做一个简单的Task。1首先需要添加Microsoft.Build.Utilities.v3.5.dll和Microsoft.Build.Framework.dll中引用。在Microsoft.Build.Framework中为我们定义了接口ITask自定义任务需要去实现这个契约。其定义如下publicinterface ITask{IBuildEngine BuildEngine { get;set; }ITaskHost HostObject { get;set; }boolExecute();}IBuildEngine 从字义上说是编译引擎他主要承载了我们的编译生成时的信息和消息警告错误等事件注册。而Execute这是我们Task执行体。HostObject 任务关联宿主信息。在Microsoft.Build.Utilities下Task为我们实现了基本的ITask信息。我们可以从这里继承开始。下面是一个简单的实现using System;using System.Collections.Generic;using System.Linq;using System.Text;namespace FirstBuildTask{publicclass MyBuildTask : Microsoft.Build.Utilities.Task{private string outputFile;[Microsoft.Build.Framework.Required]publicstring OutputFile{get {returnoutputFile; }set{ outputFile value; }}publicoverride boolExecute(){Log.LogWarning(test message: this.outputFile);returntrue;}}}下面我们需要关联Task本人不喜欢污染所以加到csproject(也可全局所有项目使用)。下面我们创建一个简单的控制台程序using System;using System.Collections.Generic;using System.Linq;using System.Text;namespace BlogSample{class Program{staticvoid Main(string[] args){Console.WriteLine(ok);Console.Read();}}}用记事本形式打开csproject文件添加我们的Task声明和任务。(xml标记含义将在后续这里先看看效果。)声明Task添加任务修改后的csproject文件形如上边红线注释的就是我们的Task所做的警告和输出路径的提示。我们已经完成了一个简单Task但还遗留这MsBuild配置下面将简单的描述。1UsingTask定义属性说明AssemblyNameAssemblyName 或 AssemblyFile 属性是必需的。要加载的程序集的名称。尽管 AssemblyName 属性不是必需的但它接受强名称程序集。使用此属性等效于通过 .NET Framework 中的 Load 方法加载程序集。如果使用了 AssemblyFile 属性便不能使用此属性。AssemblyFileAssemblyName 或 AssemblyFile 属性是必需的。程序集的文件路径。此属性既接受完整路径也接受相对路径。相对路径是相对于当前项目目录的路径。使用此属性等效于通过 .NET Framework 中的 LoadFrom 方法加载程序集。如果使用了 AssemblyName 属性便不能使用此属性。TaskName必选的属性。要从程序集中引用的任务的名称。如果可能存在多义性则此属性应该始终指定完整的命名空间。如果存在多义性MSBuild 将选择任意匹配方式该匹配方式可能产生意外的结果。Condition可选的属性。要计算的条件。有关更多信息请参见 MSBuild 条件。在系统中为我们定义了很多Task有AL(程序集链接器)任务:描述 AL 任务及其参数。AspNetCompiler 任务:包装 aspnet_compiler.exe它是预编译 ASP.NET 应用程序的实用工具。Copy 任务:描述 Copy 任务及其参数。CreateItem 任务:描述 CreateItem 任务及其参数。CreateProperty 任务:描述 CreateProperty 任务及其参数。Csc 任务:描述 Csc 任务及其参数。Delete 任务:描述 Delete 任务及其参数。Error 元素 (MSBuild):根据计算的条件语句停止生成操作并记录错误。Exec 任务:描述 Exec 任务及其参数。FindUnderPath 任务:确定指定项集合中的哪些项存在于指定的文件夹及其所有子文件夹中。GenerateApplicationManifest 任务:描述 GenerateApplicationManifest 任务及其参数。GenerateBootstrapper 任务:提供一种自动化方式来检测、下载和安装应用程序及其必备组件。GenerateDeploymentManifest 任务:描述 GenerateDeployManifest 任务及其参数。GenerateResource 任务:将 .txt 和 .resx 文件转换为公共语言运行库二进制 .resources 文件。GetAssemblyIdentity 任务:从指定的文件检索程序集标识并输出标识信息。GetFrameworkPath 任务:检索 .NET Framework 程序集的路径。GetFrameworkSdkPath 任务:检索 .NET Framework SDK 的路径。LC 任务:描述 LC 任务及其参数。MakeDir 任务:描述 MakeDir 任务及其参数。MSBuild 任务:描述 MSBuild 任务及其参数。RegisterAssembly 任务:描述 RegisterAssembly 任务及其参数。RemoveDir 任务:描述 RemoveDir 任务及其参数。ResGen 任务:描述 ResGen 任务及其参数。ResolveAssemblyReference 任务:描述 ResolveAssemblyReference 任务及其参数。ResolveComReference 任务描述 ResolveCOMReference 任务及其参数。SGen 任务为指定程序集中的类型创建一个 XML 序列化程序集。SignFile 任务使用指定证书对指定文件进行签名。Touch 任务描述 Touch 任务及其参数。UnregisterAssembly 任务描述 UnregisterAssembly 任务及其参数。Vbc 任务”描述 Vbc 任务及其参数。VCBuild 任务“描述 VCBuild 任务及其参数。Warning 元素 (MSBuild)根据计算的条件语句在生成期间记录警告。2Target定义...描述了我们的目标可以包含0个多个任务。属性属性说明Name必选的属性。目标的名称。DependsOnTargets可选的属性。在执行此目标或者进行顶级依赖项分析之前必须执行的目标。多个目标之间用分号分隔。Inputs可选的属性。此目标的项输入。此属性中的项用作顶级依赖项分析中的输入。Outputs可选的属性。此目标的预期输出。可以通过对输入项应用转换来生成输出项。有关转换的更多信息请参见 MSBuild 转换。Condition可选的属性。要计算的条件。如果条件的计算结果为 false目标将不会执行该目标的体或者在 DependsOnTargets 属性中设置的任何目标的体。有关条件的更多信息请参见 MSBuild参考文献本文转自 破狼 51CTO博客原文链接http://blog.51cto.com/whitewolfblog/835134如需转载请自行联系原作者