2014-01-30 2 views
0

저는 VS2010 전문가를 사용하고 있습니다. 프로젝트가 있지만 한 가지 구성에서는 코드 중 일부만 컴파일하고 다른 코드에서는 나머지 만 컴파일하는 방법이 필요합니다. #ifdef는 그 코드를 둘러싸고 있어야하기 때문에 다소 거추장스럽고 많은 조각이 있습니다. 나는 속성처럼 생각하고 있었다. 그리고 여기에 어떤 minecraft modders가 있다면, 기본적으로 C#을 위조 한 @SideOnly가 필요합니다.C# Build-Config 종속 컴파일

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으로 다시 돌아 가야합니다.