0

C# コードで .Net バージョン番号を取得したいので、.csproj ファイルに次の行を追加しました。

<DefineConstants Condition=" $(TargetFrameworkVersion.Replace('v', '')) &gt;= 3.5 ">$(DefineConstants);NET35_ABOVE</DefineConstants>

次に、C# コードで「#if NET35_ABOVE」を使用して、現在の .Net バージョンが 3.5 よりも新しいかどうかを確認できます。上記の行は MSBuild 4.0 では問題なく動作しますが、MSBuild 3.5 は "置換" 関数を認識しません。同様の方法で .Net バージョンを動的にチェックする場合、MSBuild 3.5 でどのように行うことができますか?

4

1 に答える 1

0

あなたの例はVS2010でうまくいくようです。

これが私が試したことです:

<PropertyGroup>
    <DefineConstants Condition=" $(TargetFrameworkVersion.Replace('v', '')) &gt;= 3.5 ">$(DefineConstants);TEST1</DefineConstants>
    <DefineConstants Condition=" $(TargetFrameworkVersion.SubString(1,3)) &gt;= 3.5 ">$(DefineConstants);TEST2</DefineConstants>
    <DefineConstants Condition=" $(TargetFrameworkVersion.SubString(1,3)) &gt;= 4.0 ">$(DefineConstants);TEST3</DefineConstants>
    <DefineConstants Condition=" $(TargetFrameworkVersion.SubString(1,3)) &gt;= 4.5 ">$(DefineConstants);TEST4</DefineConstants>
</PropertyGroup>

編集:

しかし、VS2008を使用しているので、を使用して、このようなことを行うことができます

<Choose>
  <When Condition=" $(TargetFrameworkVersion) == 'v3.5' ">
  <PropertyGroup>
    <DefineConstants >$(DefineConstants);TEST1</DefineConstants>
  </PropertyGroup>
  </When>
</Choose>
于 2013-02-11T19:26:56.907 に答える