我有两个基本相同的应用程序,差异很小(不同的徽标,Pro中隐藏的广告,登录流程的不同Facebook应用ID等)。
目前,我使用
public const bool isProVersion = false;
我在编译之前切换,并根据其值更改整个应用行为。
唯一的问题是我的错误列表中有很多“无法检测到的代码”注意事项。
这是预期的,因为在该版本中永远不能访问某些代码,但它看起来不是很干净。
我可以使用静态变量而不是常量,但这会使广告代码编译并“可访问”到专业版中,这是不需要的,可能会降低性能。
还有更好的选择吗?
答案 0 :(得分:1)
扩展Jeroen Vannevel的评论,你真的应该使用预处理器指令。您应该使用ISPROVERSION
指令和两个编译配置,一个定义ISPROVERSION
(专业配置)和一个不定义(免费配置)。
所以,而不是这样做:
if (YourClassName.isProVersion)
{
// user has paid, yey!
SomeClass.LoadAds(false);
}
else
{
// user didn't pay, scr** them!
SomeClass.LoadAds(true);
}
你会做这样的事情:
#if ISPROVERSION
// user has paid, yey!
SomeClass.LoadAds(false);
#else
// user didn't pay, scr** them!
SomeClass.LoadAds(true);
#endif
这样,如果使用专业版配置进行构建,#else
语句中的代码甚至不会被编译。
在此处阅读有关定义预处理程序指令的更多信息:/define (C# Compiler Options)