2011-10-17 1 views
3

これは基本的にフォローアップの質問です: Using Visual Studio project properties effectively for multiple projects and configurationsVisual Studioでのランタイムライブラリのプロパティへのアクセス2010

私たちのライブラリのターゲット名がこの形式では現在、次のとおりです。

$(ProjectName)-$(PlatformToolset)-$(PlatformShortName)-$(Configuration) 

私たちは、追加したいですプロジェクトで使用されているランタイムライブラリに関する情報をターゲット名に追加すると、$(RuntimeLibrary)を追加しようとしましたが、設定されていないようです。ターゲット名が解決された時点でランタイムライブラリを取得する他の方法はありますか?

ありがとう、 ジョン。

答えて

0

このプロパティシートでこれを行うことができます。あなたのプロパティシートでそれをインポートすると、RuntimeLibraryに次のようにアクセスできます:$(RuntimeLibrary)

はい!!!これはあなたの不動産のシートでも使えるでしょう= ^。〜=

<?xml version="1.0" encoding="utf-8"?> 
<Project ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003"> 
    <PropertyGroup> 
     <_IsDebug>$([System.Convert]::ToString($([System.Text.RegularExpressions.Regex]::IsMatch($(Configuration),'[Dd]ebug'))))</_IsDebug> 

     <_ItemDefinitionGroupRegex><![CDATA[<ItemDefinitionGroup Condition=".*']]>$(Configuration)\|$(Platform)<![CDATA['">((?:.*\n)*?.*)</ItemDefinitionGroup>]]></_ItemDefinitionGroupRegex> 
     <_RuntimeLibraryRegex><![CDATA[(?:.*\n)*?.*<RuntimeLibrary>(.*)</RuntimeLibrary>(?:.*\n)*?.*]]></_RuntimeLibraryRegex> 

     <_HasRuntimeLibrary>$([System.Text.RegularExpressions.Regex]::IsMatch($([System.Text.RegularExpressions.Regex]::Match($([System.IO.File]::ReadAllText($(ProjectPath))), $(_ItemDefinitionGroupRegex)).Result('$1')), $(_RuntimeLibraryRegex)))</_HasRuntimeLibrary> 

     <!-- 
      Fix incremental build (Different results when running msbuild within Visual Studio or from console). 
      http://connect.microsoft.com/VisualStudio/feedback/details/677499/different-results-when-running-msbuild-within-visual-studio-or-from-console 
     --> 
     <DisableFastUpToDateCheck>true</DisableFastUpToDateCheck> 
    </PropertyGroup> 

    <Choose> 
     <When Condition="$([System.Convert]::ToBoolean($(_HasRuntimeLibrary)))"> 
      <!-- Extract runtime library from project file. --> 
      <PropertyGroup Label="UserMacros"> 
       <_RuntimeLibrary>$([System.Text.RegularExpressions.Regex]::Match($([System.Text.RegularExpressions.Regex]::Match($([System.IO.File]::ReadAllText($(ProjectPath))), $(_ItemDefinitionGroupRegex)).Result('$1')), $(_RuntimeLibraryRegex)).Result('$1'))</_RuntimeLibrary> 
      </PropertyGroup> 
     </When> 
     <Otherwise> 
      <!-- Set default runtime library --> 
      <PropertyGroup Label="UserMacros"> 
       <_RuntimeLibrary Condition=" '$(_IsDebug)' == 'True' ">MultiThreadedDebugDLL</_RuntimeLibrary> 
       <_RuntimeLibrary Condition=" '$(_IsDebug)' == 'False' ">MultiThreadedDLL</_RuntimeLibrary> 
      </PropertyGroup> 
     </Otherwise> 
    </Choose> 

    <PropertyGroup Label="UserMacros"> 
     <IsDebug>$(_IsDebug)</IsDebug> 

     <ConfigType Condition=" '$(IsDebug)' == 'True' ">Debug</ConfigType> 
     <ConfigType Condition=" '$(IsDebug)' == 'False' ">Release</ConfigType> 

     <Architecture Condition=" '$(Platform)' == 'Win32' ">x86</Architecture> 
     <Architecture Condition=" '$(Platform)' == 'x64' ">x64</Architecture> 

     <Toolset Condition=" '$(PlatformToolset)' == 'v110' ">msvc.110</Toolset> 

     <RuntimeLibrary>$(_RuntimeLibrary)</RuntimeLibrary> 
    </PropertyGroup> 

    <ItemGroup> 
     <BuildMacro Include="IsDebug"> 
      <Value>$(IsDebug)</Value> 
     </BuildMacro> 
     <BuildMacro Include="Toolset"> 
      <Value>$(Toolset)</Value> 
     </BuildMacro> 
     <BuildMacro Include="Architecture"> 
      <Value>$(Architecture)</Value> 
     </BuildMacro> 
     <BuildMacro Include="RuntimeLibrary"> 
      <Value>$(RuntimeLibrary)</Value> 
     </BuildMacro> 
     <BuildMacro Include="ConfigType"> 
      <Value>$(ConfigType)</Value> 
     </BuildMacro> 
    </ItemGroup> 
</Project> 
関連する問題