如何扩展Visual Studio 的编译时功能

 我来答
huanglenzhi
2015-02-08 · 知道合伙人数码行家
huanglenzhi
知道合伙人数码行家
采纳数:117538 获赞数:517199
长期从事计算机组装,维护,网络组建及管理。对计算机硬件、操作系统安装、典型网络设备具有详细认知。

向TA提问 私信TA
展开全部

  很多时候会想在vs编译的时候自定义一些事情或者动作,


  例如:


  拷贝生成的文件到特定的目录。


  部署程序到测试目录或者环境,例如注册到windows服务,更新GAC等。


  根据编译环境生成特定的配置文件(例如web.config) PS: 身在一个复杂环境, 这是我最想要的功能。


  自动执行外部exe。


  同步DLL和其他资源文件。


  1.最简单的自然是用Visual Studio自带的编译事件,这东西使用方便,又是Visual Studio自带的功能,就是功能弱了一点(好吧 其实是很弱)


  将项目生成的DLL文件拷贝到特定目录,(如果你想拷贝一整个文件夹 用xcopy; 当然,熟悉命令行的人可以弄出更多的玩法)


  如下图所示

  2.另外一种比较推荐的方式是自定义编译扩展(可以执行C#代码...功能强大多了), 看下面这个项目文件的最后几句 (项目文件就是 项目名.csproj)


  <Import Project="..\..\Build\Tasks\Build.tasks" />

  <Target Name="BeforeBuild">

  <Message Text="Start Automatic Generate Configuration File, Source File: $(ProjectDir)web.config" Importance="high">

  </Message>

  <ConfigurationEnvironmentTask TemplateFile="$(ProjectDir)web.template.config" TargetFile="$(ProjectDir)web.config" DataSource="$(EnvironmentName).config" />

  </Target>

  </Project>

  这几句话的意思是


  1. 包含一个task文件 (该文件包含了ConfigurationEnvironmentTask 的定义,这是一个自定开发的类,其主要作用是根据环境生成web.config文件)


  2.输出一行提示信息 Start Automatic..... (该信息将显示在Output Window)


  3. 调用ConfigurationEnvironmentTask 并传入一些参数(TemplateFile 等都是自己定义的参数)


  Build.tasks的文件内容其实很简单,主要就是说明了这个task定义在哪里 (Build.dll)


  <?xml version="1.0" encoding="utf-8"?>

  <Project xmlns="http://schemas.microsoft.com/developer/msbuild/2003">

  <UsingTask AssemblyFile="Build.dll" TaskName="Build.ConfigurationEnvironmentTask"/>

  </Project>

推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式