我正在尋找一個前處理器符號,它允許我根據專案是否為 xamarin 來編譯不同的代碼。
void a()
{
#if XAMARIN
b();
#else
c();
#endif
}
uj5u.com熱心網友回復:
我建議您不要使用前處理器符號,而是在每個平臺的單獨類中使用抽象的東西。然后在運行時注入具體的實作。
如果你真的必須使用這些,你總是可以根據需要為每個配置或目標框架定義你自己的符號。
只需Directory.Build.targets在您的存盤庫的根目錄中創建一個名為(大小寫很重要!)的檔案。通常在您的.sln檔案旁邊。
在這里,Directory.Build.targets您可以像這樣定義符號:
<Project>
<PropertyGroup Condition="$(TargetFramework.StartsWith('netstandard'))">
<DefineConstants>$(DefineConstants);NETSTANDARD;PORTABLE</DefineConstants>
</PropertyGroup>
<PropertyGroup Condition="$(TargetFramework.StartsWith('net4'))">
<DefineConstants>$(DefineConstants);NET;WPF;XAML</DefineConstants>
</PropertyGroup>
<PropertyGroup Condition="$(TargetFramework.StartsWith('uap'))">
<DefineConstants>$(DefineConstants);NETFX_CORE;XAML;WINDOWS;WINDOWS_UWP;UWP</DefineConstants>
</PropertyGroup>
<PropertyGroup Condition="$(TargetFramework.StartsWith('xamarin.ios'))">
<DefineConstants>$(DefineConstants);MONO;UIKIT;COCOA;APPLE;IOS</DefineConstants>
</PropertyGroup>
<PropertyGroup Condition="$(TargetFramework.StartsWith('xamarin.mac'))">
<DefineConstants>$(DefineConstants);MONO;COCOA;APPLE;MAC</DefineConstants>
</PropertyGroup>
<PropertyGroup Condition="$(TargetFramework.StartsWith('xamarin.tvos'))">
<DefineConstants>$(DefineConstants);MONO;COCOA;APPLE;TVOS</DefineConstants>
</PropertyGroup>
<PropertyGroup Condition="$(TargetFramework.StartsWith('xamarin.watchos'))">
<DefineConstants>$(DefineConstants);MONO;COCOA;APPLE;WATCHOS</DefineConstants>
</PropertyGroup>
<PropertyGroup Condition="$(TargetFramework.StartsWith('monoandroid'))">
<DefineConstants>$(DefineConstants);MONO;ANDROID</DefineConstants>
</PropertyGroup>
<PropertyGroup Condition=" '$(TargetFramework)' == 'monoandroid10.0'">
<DefineConstants>$(DefineConstants);MONO;ANDROID;__ANDROID_29__;</DefineConstants>
</PropertyGroup>
<PropertyGroup Condition="$(TargetFramework.StartsWith('netcoreapp'))">
<DefineConstants>$(DefineConstants);NETCORE;NETCOREAPP</DefineConstants>
</PropertyGroup>
<PropertyGroup Condition="$(TargetFramework.StartsWith('netcoreapp3.'))">
<DefineConstants>$(DefineConstants);WPF</DefineConstants>
</PropertyGroup>
<PropertyGroup Condition="$(TargetFramework.StartsWith('tizen'))">
<DefineConstants>$(DefineConstants);TIZEN</DefineConstants>
</PropertyGroup>
</Project>
然后你可以根據需要在你的專案中使用這些:
#if PORTABLE
// do portable stuff
#elif UWP
// do uwp stuff
#endif
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/386818.html
