如何创建多个csproj项目使用的公共post构建事件

时间:2011-03-01 21:08:58

标签: visual-studio-2010 msbuild

我有几个Visual Studio 2010 C#项目。我想让他们都有相同的post build事件。基本上我希望他们在某处复制他们的输出。我想我可以使用< import>来做到这一点。每个csproj文件中的语句,但我似乎无法弄清楚导入文件中需要的属性/目标。你有什么建议吗?

编辑:我尝试了以下但无法使其工作。这就是Imports.props文件的样子:

<?xml version="1.0" encoding="utf-8"?>
<Project ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
    <Target Name="AfterBuild">
        <Message Text="Here I come to save the day!" />
    </Target>
</Project>

然后我将它包含在csproj文件中:

<?xml version="1.0" encoding="utf-8"?>
<Project ToolsVersion="4.0" DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
    <Import Project="Imports.props" />
    ...

我也尝试过Imports.props:

<?xml version="1.0" encoding="utf-8"?>
<Project ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
    <PropertyGroup>
        <PostBuildEvent>echo Here I come to save the day!</PostBuildEvent>
    </PropertyGroup>
</Project>

3 个答案:

答案 0 :(得分:4)

确保在 Microsoft.Common.targets导入后导入目标文件,因为该文件定义了一个空的AfterBuild目标,该目标将覆盖目标文件中的定义。

答案 1 :(得分:1)

每个项目文件中的

<import>和公共构建文件中的<AfterBuild>目标。

CommonTargets http://msdn.microsoft.com/en-us/library/ms171464.aspx

TargetOrder http://msdn.microsoft.com/en-us/library/ms171462.aspx

答案 2 :(得分:0)

我设法通过属性表共享构建脚本,将其写为继承属性表中的宏。然后在任何需要它们的项目中调用宏。

在(VS2005)下找到了宏: 通用属性 - &gt;用户宏

请记住,只要订单正确,您就可以将宏放在其他宏中。