【问题标题】:Compiler arguments with XAML? [duplicate]XAML 的编译器参数? [复制]
【发布时间】:2012-12-04 16:02:47
【问题描述】:

可能重复:
XAML Conditional Compilation

在 C# 中,我可以在代码中执行以下操作。

#if COMPILING_AS_WINDOWS_PHONE_7
    //some random code
#else
    //some random code
#endif

这允许我有几个项目,通过使用项目的编译器参数进行不同的编译。换句话说,我不必每次都重新发明轮子。

但是,我如何使用 XAML 做到这一点?我似乎在网上找不到任何关于此的任何信息。

【问题讨论】:

  • 我确实看到了那个链接。不知道答主发的链接对我有什么帮助,他也没有很好的解释。
  • 我可以解释给定的 XAML 代码习语是部分类编译的基础,这是一个想法:“如果在编译时提供更多类的详细信息,这将导致更多您的课程的专门实施”。无论如何,在 XAML 中,您应该明确定义 XAML 使用的所有可能性,因此您的 XAML 会更大,这消除了 #if #elseif 预处理器定义的习惯用法。例如,您真的不会喜欢在 Windows 8 XAML 控件中为每个控件的 widows phone 7 保留所有废话的想法。
  • 我只在场景中需要它。

标签: c# xaml visual-studio-2012 baml


【解决方案1】:

无法控制 XAML,因为 XAML 应该始终在 .NET 中包含自动生成的代码,这些代码将自动编译并忽略所有前处理器定义。

您可以使用 cmets 并通过 注释符号手动执行此操作

唯一可行的解​​决方案 - 将您的 XAML 定义完全转换为完全编码为 C# 类,因此使用 纯 C# 类到类控制库中。或者,您可以使用托管 C++ 进行控件组合。

唯一的缺点是很难手动开发、维护、阅读和更改。优点是您可以使用 XAML 的代码生成工具之一。

最后,使用 #if #endif 您可以将一个代码库/代码源用于 windows phone / 8 开发,但根据我的经验,最好使用部分类通用代码库(您可以添加一个文件作为对项目的引用)。

【讨论】:

  • 看看对我的问题的评论。可能的重复。看起来很有希望。你能研究一下并帮助我理解吗?
猜你喜欢
  • 1970-01-01
  • 2015-08-19
  • 2010-10-02
  • 2018-03-30
  • 1970-01-01
  • 2012-06-05
  • 1970-01-01
  • 1970-01-01
  • 2010-11-15
相关资源
最近更新 更多