自定义条件编译符号

And*_*iAn 3 c# conditional-compilation visual-studio xamarin

我目前正在努力使用自定义配置。我的解决方案有一个 .NET 标准库和两个使用该库的其他项目(一个用于 Windows,一个用于 Android)。

我试图做的是为库提供编译器常量 WINDOWS 和 MOBILE。

这就是我多次尝试的方式:

  1. 创建两个新配置 WindowsDE 和 MobileDE,从调试配置复制设置并创建新的项目配置。在某些尝试中,我还删除了默认的 Debug 配置,但这并没有帮助

  2. 库的属性 -> Build,选择 WindowsDE 并将 WINDOWS 放入 Conditional compiler symbols 字段,然后选择 MobileDE 并将 ANDROID 放入其中。

我正在通过调用库中的方法来测试它:

#if WINDOWS
        System.Diagnostics.Debug.WriteLine("Windows");
#endif

#if ANDROID
        System.Diagnostics.Debug.WriteLine("Android");
#endif
Run Code Online (Sandbox Code Playgroud)

但这根本行不通。也只是使用

System.Diagnostics.Debug.WriteLine("anything");
Run Code Online (Sandbox Code Playgroud)

没有任何 #if 不会打印,并且在某些尝试中,我什至无法再调试库。

将不胜感激在这方面的任何帮助

Oli*_*bes 7

您可以在项目属性中定义条件编译常量

在此处输入图片说明

#if WINDOWS
    System.Diagnostics.Debug.WriteLine("Windows"); // NOT printed!
#endif

#if ANDROID
    System.Diagnostics.Debug.WriteLine("Android"); // Printed!
#endif
Run Code Online (Sandbox Code Playgroud)

您可以输入多个以分号分隔的符号。不要设置它们truefalse. 列出的是true. 缺少的自动false.

如果一个或另一个都没有打印,那么可能该解决方案无法编译并且您正在运行旧代码。尝试重建解决方案。