是否可以使用MSBuild将配置定义移动到属性表中?

时间:2011-03-07 09:18:25

标签: visual-studio-2010 msbuild

我正在维护大量具有20多种配置的项目,并且仍然会不时添加一些配置。将此类更改传播到所有项目中是我们现在使用VCBuild所做的。我开始尝试使用MSBuild,似乎有一些逻辑将它们提取到单独的属性表中,允许在一个地方进行更改。我该怎么做?

请注意,当我尝试这样做时,Visual Studio抱怨项目中没有配置。我试图实现它的一个例子如下。提前谢谢。

configurations.props:

<?xml version="1.0" encoding="utf-8"?>
<Project ToolsVersion="4.0" DefaultTargets="Default" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<ItemGroup Label="ProjectConfigurations">
    <ProjectConfiguration Include="Debug_Unicode|Win32">
        <Configuration>Debug_Unicode</Configuration>
    <Platform>Win32</Platform>
    </ProjectConfiguration>
    ...
</ItemGroup>

凸出:

<?xml version="1.0" encoding="utf-8"?>
<Project DefaultTargets="Build" ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003"> <PropertyGroup Label="Globals">
        <ProjectName>projname</ProjectName>
        <ProjectGuid>{XXX...XXX}</ProjectGuid>
        <RootNamespace>proj</RootNamespace> </PropertyGroup>

    <Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />

    <Import Project="configurations.props" />
    <PropertyGroup Label="Configuration">
        <ConfigurationType>StaticLibrary</ConfigurationType>
    </PropertyGroup>

    <Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />

    <ImportGroup Label="PropertySheets">
        <Import Project="other.props" /> </ImportGroup>

    ...

2 个答案:

答案 0 :(得分:2)

据我所知(在我看来)这是VS 2010测试阶段的一个错误,但遗憾的是修复程序没有进入发布版本。我会尝试挖掘连接问题。您可能需要考虑使用MSBuild Project对象模型生成一些代码,或使用相同的方式对项目文件进行一些构建时验证,但除此之外我们还要等待修复。

答案 1 :(得分:0)

这可以在VS2012中发布,因为我发布了here,未在VS2010中测试过。不明白为什么它不起作用。