У меня были проблемы с этими решениями, возможно, потому, что мои начальные константы были предварительно построенные этими свойствами ,
<DefineConstants />
<DefineDebug>true</DefineDebug>
<DefineTrace>true</DefineTrace>
<DebugSymbols>true</DebugSymbols>
Visual Studio 2010 также высказал ошибку из-за полуколоний, заявив, что они являются незаконными символами. Сообщение об ошибке дало мне подсказку, поскольку я мог видеть предварительно построенные константы, разделенные запятыми, в конце концов последовали за моей «незаконной» точкой с запятой. После некоторого переформатирования и массажа я смог придумать решение, которое работает для меня.
<PropertyGroup>
<!-- Adding a custom constant will auto-magically append a comma and space to the pre-built constants. -->
<!-- Move the comma delimiter to the end of each constant and remove the trailing comma when we're done. -->
<DefineConstants Condition=" !$(DefineConstants.Contains(', NET')) ">$(DefineConstants)$(TargetFrameworkVersion.Replace("v", "NET").Replace(".", "")), </DefineConstants>
<DefineConstants Condition=" $(DefineConstants.Contains(', NET')) ">$(DefineConstants.Remove($(DefineConstants.LastIndexOf(", NET"))))$(TargetFrameworkVersion.Replace("v", "NET").Replace(".", "")), </DefineConstants>
<DefineConstants Condition=" $(TargetFrameworkVersion.Replace('v', '')) >= 2.0 ">$(DefineConstants)NET_20_OR_GREATER, </DefineConstants>
<DefineConstants Condition=" $(TargetFrameworkVersion.Replace('v', '')) >= 3.5 ">$(DefineConstants)NET_35_OR_GREATER</DefineConstants>
<DefineConstants Condition=" $(DefineConstants.EndsWith(', ')) ">$(DefineConstants.Remove($(DefineConstants.LastIndexOf(", "))))</DefineConstants>
</PropertyGroup>
Я бы опубликовать скриншот диалогового окна Advanced Settings Compiler (открыть, нажав на кнопку «Дополнительные опции компиляции ...» на вкладке Compile вашего проекта). Но, как новый пользователь, мне не хватает репутации для этого. Если бы вы могли увидеть скриншот, вы увидите, что пользовательские константы будут автоматически заполнены группой свойств, а затем вы скажете: «Мне нужно получить некоторые из них».
EDIT: Получили, что репутация на удивление быстро .. Спасибо, ребята! Вот что скриншот:
Возможный дубликат [Можно условно скомпилировать версию .NET Framework?] (Http://stackoverflow.com/questions/1449925/is-it-possible-to-condition-compile-to-net-framework -версия) – JohnC
Если вы хотите простое предварительное испрошенное решение в VS, пожалуйста, проголосуйте за этот голос пользователя, http://visualstudio.uservoice.com/forums/121579-visual-studio/suggestions/7699920-built-in-conditional -compilation-на-каркасных-вар. – JohnC
Взгляните на эту ссылку. Довольно объяснительный. http://blogs.msmvps.com/punitganshani/2015/06/21/5-steps-to-targeting-multiple-net-frameworks/ –