Msbuild 命名配置属性函数

Msbuild 命名配置属性函数,msbuild,Msbuild,我有一个项目,它有一组项目上下文(为了简洁起见,省略了完整的属性组): 这是可行的,但是有没有办法有效地定义$(LibVersionNum)=$(Configuration.Substring(0,3)),从而清理我的语法 试试这个: <?xml version="1.0" encoding="utf-8"?> <Project ToolsVersion="4.0" DefaultTargets="Build" xmlns="http://schemas.microsoft.c

我有一个项目,它有一组项目上下文(为了简洁起见,省略了完整的属性组):

这是可行的,但是有没有办法有效地定义
$(LibVersionNum)=$(Configuration.Substring(0,3))
,从而清理我的语法

试试这个:

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

    <PropertyGroup>
        <Configuration>v82_Release</Configuration>
        <Platform>x64</Platform>
    </PropertyGroup>

    <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'v82_Release|x64' ">

    </PropertyGroup>

    <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'v90_Release|x64' ">

    </PropertyGroup>

    <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'v90_Debug|x64' ">

    </PropertyGroup>

    <PropertyGroup>
        <LibVersionNum>$(Configuration.Substring(0,3))</LibVersionNum>
    </PropertyGroup>

    <ItemGroup>
        <MyItem Include="Ref1">
            <HintPath>Lib\$(LibVersionNum)\Assembly1.dll</HintPath>
        </MyItem>
        <MyItem Include="Ref2">
            <HintPath>Lib\$(LibVersionNum)\Assembly2.dll</HintPath>
        </MyItem>
        <MyItem Include="Ref3">
            <HintPath>Lib\$(LibVersionNum)\Assembly3.dll</HintPath>
        </MyItem>
    </ItemGroup>

    <Target Name="Build">
        <Message Text="Current Config: $(Configuration)"/>
        <Message Text="%(MyItem.Identity): %(MyItem.HintPath)"/>
    </Target>
</Project>

v82_发布
x64
$(配置.子字符串(0,3))
Lib\$(LibVersionNum)\Assembly1.dll
Lib\$(LibVersionNum)\Assembly2.dll
Lib\$(LibVersionNum)\Assembly3.dll
<HintPath>Lib\$(Configuration.Substring(0,3))\Assembly1.dll</HintPath>
<HintPath>Lib\$(Configuration.Substring(0,3))\Assembly2.dll</HintPath>
<HintPath>Lib\$(Configuration.Substring(0,3))\Assembly3.dll</HintPath>
<?xml version="1.0" encoding="utf-8"?>
<Project ToolsVersion="4.0" DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">

    <PropertyGroup>
        <Configuration>v82_Release</Configuration>
        <Platform>x64</Platform>
    </PropertyGroup>

    <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'v82_Release|x64' ">

    </PropertyGroup>

    <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'v90_Release|x64' ">

    </PropertyGroup>

    <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'v90_Debug|x64' ">

    </PropertyGroup>

    <PropertyGroup>
        <LibVersionNum>$(Configuration.Substring(0,3))</LibVersionNum>
    </PropertyGroup>

    <ItemGroup>
        <MyItem Include="Ref1">
            <HintPath>Lib\$(LibVersionNum)\Assembly1.dll</HintPath>
        </MyItem>
        <MyItem Include="Ref2">
            <HintPath>Lib\$(LibVersionNum)\Assembly2.dll</HintPath>
        </MyItem>
        <MyItem Include="Ref3">
            <HintPath>Lib\$(LibVersionNum)\Assembly3.dll</HintPath>
        </MyItem>
    </ItemGroup>

    <Target Name="Build">
        <Message Text="Current Config: $(Configuration)"/>
        <Message Text="%(MyItem.Identity): %(MyItem.HintPath)"/>
    </Target>
</Project>