【问题标题】:C# Build-Config dependent CompilationC# Build-Config 依赖编译
【发布时间】:2014-01-30 16:26:01
【问题描述】:

我正在使用 VS2010 专业版,并且我有一个项目,但我希望有一种方法可以在一个配置中仅编译部分代码,而在另一个配置中编译其余代码。 #ifdef 相当笨重,因为它必须围绕所述代码,并且有很多片段。我在想一个属性。如果这里有任何我的世界模组,我基本上需要 forge 的 @SideOnly for C#。

public class Foo{
    [BuildConfig("Config1")]
    public void Bar(){}
    [BuildConfig("Config2")]
    public void Baz(){}
}

在 Config1 下编译这段代码会忽略 Baz,反之亦然。

【问题讨论】:

  • 为什么你的程序只依赖于部分编译,特别是在一个如此复杂以至于#if 不起作用的方式上?将要在一个上下文中编译的部分与要在不同上下文中编译的部分分开会更有意义。
  • 这是一个客户端-服务器的事情。我希望客户端只有客户端代码,服务端只有服务器代码,但是重写通用代码似乎很浪费。
  • 即渲染只在客户端,逻辑只在服务器端
  • 为什么渲染和逻辑在同一个类?为什么客户端和服务器类在同一个程序集中?
  • 假设我有一个 Item 类......并且服务器需要执行它的功能,并且客户端需要在库存中呈现它。

标签: c# buildconfiguration


【解决方案1】:

关于为什么混合无关代码不好的评论,您可以使用ConditionalAttribute,但只能在void 方法上使用。这也会在调用点编译出代码。对于代码的其他区域,您必须求助于#ifdef

【讨论】:

    猜你喜欢
    • 2013-04-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-10-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-08-01
    相关资源
    最近更新 更多