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 Debug”和“Unsafe Release”,它们具有现有选项,并选中 Unsafe 并添加 UNSAFE 条件符号。您可以使用 Unsafe 配置,而不是切换 Unsafe 选项。

您还可以让配置更改不安全程序集的输出名称,因此您将拥有两个程序集,例如 Bitmaps.dll 和 Bitmaps.Unsafe.dll,并且程序集的客户端可以通过指定哪个程序集来决定哪个最适合其需求参考。

于 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 回答