モノラルまたはMS.NETランタイムのどちらでコンパイルするかを認識する条件付きコンパイルスイッチが必要です。これどうやってするの?
2 に答える
Mono コンパイラが定義する__MonoCS__
しかし、しかし、しかし、Mono の要点は、VS で構築したアセンブリを取得して Mono で実行したり、その逆を実行したりできることです。
Mono と MS.NET の違いが必要な場合は、実行時にそれらの決定を下す必要があるように思えます。
実行時に Mono を検出する標準的な方法は次のとおりです。
bool runningOnMono = Type.GetType ("Mono.Runtime") != null;
あるプラットフォームのコードが別のプラットフォームのコードと異なる場合があることは明らかであり、実行時またはコンパイル時にこれを実行したい場合があります。実行時に実行できない場合があります。
例えば:
Mono は、Xamarin の Ios、Android、および Mac ツール キットの基礎として使用されています。これらには多くの共通コードがありますが、単一のプラットフォームでのみ表示されるクラスもあります。これらのツール キットを使用して開発する場合、プラットフォーム間で交換できないネイティブ パッケージを開発します。
単純なケースは、ファイル名とパスです。これらはプラットフォームごとに異なります。プラットフォームごとに異なる文字列をロードするための少しの条件が必要な場合があります。プラットフォームによっては、大文字と小文字を区別するファイル名を持つものとそうでないものがあります。
UNIX、iOS、Mac、X86、X64、XBoxなど、現在のプラットフォームを返すコードが少しあればいいのですが....