Roslyn을 사용하여 일부 이전 선행 처리기 지시문의 코드를 정리하고 싶습니다. 나는 다른 // TEST_1_0을 제거하지만, 다른 // TEST_1_1을 유지하고 싶습니다이 코드Roslyn을 사용하여 선 처리기 지시문을 선택적으로 제거하십시오.
#define TEST_1_0
#define TEST_1_1
namespace ConsoleApplication1
{
class TypeName
{
public static void Main(string[] args)
{
#if TEST_1_0
int TEST_1_0 = 1;
#if TEST_1_1
int TEST_1_1 = 1;
#else//TEST_1_1
int TEST_1_1 = 0;
#endif//TEST_1_1
#else//TEST_1_0
int TEST_1_0 = 0;
#endif//TEST_1_0
}
}
}
에서 예를 들어
. 나는 코멘트에 의지 할 수 없기 때문에 #if를 해당하는 #else와 관련시켜야한다.
#if를 찾는 것은 쉽지만 해당 #else를 찾는 것이 쉽지 않습니다. 여기 내가 분석기에서 #의 다른 // TEST_1_0를 조회하고, 해당 위치 여기
- :
나는 두 가지 전략을 시도 CodeFix 공급자에서 해당 항목으로 이동하려고 시도하십시오.
두 가지 모두 매우 빠르게 복잡해 지므로 지시문이 다른 SyntaxTokens의 leadingTrivia에 퍼져 있다는 것이 문제가되는 것처럼 보입니다. 코드가 변경되면 위치 지시문에 많은 영향을 미치므로 모든 사례를 프로그래밍하는 데 많은 작업이 필요합니다.
누락 된 항목이 있습니까? 손으로 모든 다른 경우를 프로그래밍하지 않고도이 작업을 수행하는 더 쉬운 방법이 있습니까?
전략 1 또는 2를 원하십니까?
을, 툴 또는 라이브러리에 링크 [사용법 노트, 링크 된 자원이 문제에 대한 적용 방법에 대한 구체적인 설명이 수반되어야한다 , 또는 일부 샘플 코드] (http://meta.stackoverflow.com/a/251605) 또는 위의 모든 가능한 경우. –
설명 된 작업에 대해서는 다음 명령을 시도하십시오. >> python undefine -d TEST_1_0 YourFile.cs – gaDZella
주석을 편집하여주십시오. 주석은 영구적이지 않습니다.나는 나 자신을 요구하지 않고, 미래의 독자들을 위해, 그리고 당신의 이익을 위해 (그래서 그 대답은 삭제되지 않을 것입니다). –