2014-01-30 29 views
0

我正在使用VS2010專業版,我有一個項目,但我想有一種方法只編譯一個配置中的一些代碼,其餘的在另一個配置中。 #ifdef相當笨拙,因爲它必須圍繞所述代碼,並且有很多碎片。我在想像一個屬性。如果這裏有任何我的世界模型,我基本上需要forge的@SideOnly for C#。C#Build-Config dependent Compilation

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

在Config1下編譯這段代碼將會忽略Baz,反之亦然。

+1

爲什麼你的程序只依賴於部分編譯,特別是以一種非常複雜的方式,#if不起作用?在一個上下文中編譯你想要的部分與你想在不同上下文中編譯的部分是分開的。 – Magus

+0

這是一個客戶端 - 服務器的東西。我希望客戶端只有客戶端代碼和服務器只有服務器代碼,但重寫通用代碼似乎很浪費。 – AlphaModder

+0

即渲染是僅客戶端,邏輯是僅服務器 – AlphaModder

回答

0

關於爲什麼混用不相關的代碼不好,您可以使用ConditionalAttribute,但僅限於void方法。這也編譯出了代碼在callsite。對於你的代碼的其他領域,你必須訴諸於#ifdef