Как определить во время компиляции, если целевая среда выполнения .NET равна 4.0 или выше? - PullRequest
1 голос
/ 23 октября 2011

Я прочитал этот вопрос , но теперь, когда у нас также есть 4.5, решение не будет работать.
Как я могу проверить, если время выполнения выше 4.0?
Так как это строка, я думаю, я не могу сделать:

<DefineConstants Condition=" '$(TargetFrameworkVersion)' >= 'v4.0' ">NET_4_0</DefineConstants>

Так что я должен определить оба:

<DefineConstants Condition=" '$(TargetFrameworkVersion)' == 'v4.0' ">NET_4_0</DefineConstants>
<DefineConstants Condition=" '$(TargetFrameworkVersion)' == 'v4.5' ">NET_4_5</DefineConstants>

Есть ли более общее решение?

Ответы [ 2 ]

2 голосов
/ 24 октября 2011

Вы можете использовать любые методы из класса System.String в библиотеке .NET, включая сравнения.

См. http://msdn.microsoft.com/en-us/library/dd633440.aspx

Редактировать

И если вы не можете заставить функции свойств работать достаточно хорошо для вас, вы можете попробовать MSBuild Extension Pack.http://www.msbuildextensionpack.com/help/3.5.3.0/html/9c5401ed-6f55-089e-3918-2476c186ca66.htm

0 голосов
/ 17 февраля 2013

Продолжение ответа @ MichaelPrice и комментария @ HansPassant ...

<Choose>
  <When Condition=" '$(TargetFrameworkVersion.Substring(1,3))'&gt;'3.5' ">
    <ItemGroup>
      <DefineConstants>$(DefineConstants);NEWERTHANNET35</DefineConstants>
    </ItemGroup>
  </When>
</Choose>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...