7

私はWriteableBitmapC#でを扱っています。現在、安全でないコードブロックを使用して、を介してピクセルに直接アクセスしていWriteableBitmap.BackBufferます。/unsafeただし、オプションに依存したくないので、WriteableBitmap.WritePixels代わりに使用することを検討しています。

プロジェクトファイルへの手動統合を必要とせずに、コンパイルの/ unsafeオプションが使用されたときに使用できるように、「安全でない」バージョンで条件付きでコンパイルする方法はありますか?

要するに、私は次のようなものを探しています。

#if UNSAFE
   //my unsafe version
#else
   //the supposedly safe version goes here
#endif

実行時の検出も優れています。しかし、それは私が常にでコンパイルする必要があることを意味 /unsafe、それはライブラリコードがプロジェクトファイルの更新を必要とすることを意味し、それはあまり便利ではありません。

基本的には、重要なときに備えて高速バージョンを維持したいのですが、何があっても機能する合理的なバージョンを用意しています。

4

3 に答える 3

5

構成マネージャーを使用して、既存のオプションに加えて Unsafe をチェックし、UNSAFE の条件付きシンボルを追加する、"Unsafe Debug" や "Unsafe Release" などの 1 つ以上の新しい構成を作成することをお勧めします。Unsafe オプションを切り替える代わりに、Unsafe 構成を使用します。

安全でないアセンブリの出力名を構成で変更して、Bitmaps.dll と Bitmaps.Unsafe.dll などの 2 つのアセンブリを作成することもできます。アセンブリのクライアントは、アセンブリを指定することで、ニーズに最も適したものを決定できます。参照。

于 2009-02-28T00:25:36.903 に答える
1

でコンパイルすることをお勧めします/unsafe /define:SAFE。もしかしたら、私の知らない別の方法があるかもしれません。

于 2009-02-27T23:45:54.487 に答える
0

私はあなたがこのコードを試すかもしれないと思う

#define UNSAFE
#undef UNSAFE // comment this line out if you want to compile the save version

次に、例で示したようにコードを使用できます。

于 2009-02-28T00:03:33.617 に答える