MSBuild自定义规则

时间:2013-04-16 15:10:13

标签: c# .net sharepoint msbuild

当MSBuild发生时,如果sharepoint项目(来自该项目的WSP)定位到GAC,我希望它失败。

即。在打包之前我想检查一下feature.xml或其他任何其他.xml文件。

实现这一目标的可能方法有哪些?我没有任何exp。在自定义MSBuild任务中。这可行吗?

1 个答案:

答案 0 :(得分:1)

我的建议如下:

创建一个程序,该程序接受项目的路径作为参数,并根据您自己定义的错误对其进行分析。当程序发现并出错时,它只会以下列格式之一向控制台输出错误:

error: <message>
<filename>: error: <message>
<filename> (<line>): error: <message>
<filename> (<line>,<column>): error: <message>

您可以将“错误”替换为“警告”。当您使用此特定格式时,使用VS进行编译时,错误(或警告)将出现在Visual Studios错误列表中。传递文件名和行将启用“双击跳转到错误”功能。

接下来,打开项目文件并添加AfterBuild目标。在此目标中,您可以使用“运行”命令调用自己的应用程序并传递项目路径。确保将“ContinueOnError”属性设置为false。

现在无论何时构建自定义目标都会被触发。您的自定义目标将调用您的应用程序来分析您的项目。当您的应用程序输出错误时,MSBuild将选择它并取消延续并将构建标记为失败。

您也可以使用MSBuild任务,但我建议您不要这样做。 msbuild任务将加载到Visual Studio的AppDomain,锁定程序集。当您想要替换它时(例如,因为您更改了分析规则),首先必须退出Visual Studio以解锁文件。在使用源控制系统时,这将非常烦人,人们只想更新当前文件而不必担心程序集是否被锁定。

我真正成功地运行了这个原则,将我们的一个项目作为构建的一部分进行分析,并在构建过程中为我们自己的Web服务创建代理客户端。