Visual Studio 2015 CTP 5의 구멍 하나 재기록

VS2015 CTP로 업그레이드한 후에 오늘 프로젝트 중의 하나를 고쳐야 한다. 그리고 C#6.0이 바뀐 문법 코드에서 (이전에 고치지 않았고 약 200여 개) 고쳐야 한다. 먼저, 예를 들어 아래의 예시 코드:
var fullName = "\{customer.FirstName} \{customer.LastName}";

프로젝트에 이런 유사한 코드가 매우 많은데, 이것들은 모두 고쳐야 하는데, 어떻게 해야 합니까?수동으로 고치다???됐어, 대량으로 수정하자. 그런데 어떻게 대량으로 바꿀까?\{} 그냥\{}\{}\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\
여기서 주의해야 할 것은 '\{' 를 대량으로 교체해서는 안 된다는 것이다. 교체한 후에 문자열 변수가 어디에 사용되었는지 모르기 때문이다. 왜냐하면 '{' 를 문자열의 일부분으로 하고 오류 힌트와 스마트 힌트가 없기 때문이다. 이것은 절대로 기억해야 한다. 만약 당신이 이렇게 교체한다면 당신은 죽을 것이다.
하나 더 기록하자. 이전에 "{"에서 세 가지 표현식을 쓰면 된다. 예를 들어 다음과 같다.
var fullName = "\{customer.FirstName =="xishuai" ? "cnblogs_xishuai" : customer.FirstName} \{customer.LastName}";

그러나 다음과 같은 현재의 문법 특성으로 대체한다.
var fullName = $"{customer.FirstName =="xishuai" ? "cnblogs_xishuai" : customer.FirstName} {customer.LastName}";

위에 이렇게 쓰면 잘못 보고할 수 있는데, 이 문제도 나를 오랫동안 괴롭혔는데, 설마 이것도 지지하지 않겠는가?마지막으로 한참을 했더니 표현식에 "()"를 붙여야 한다는 것을 발견했다. 다음과 같다.
var fullName = $"{(customer.FirstName =="xishuai" ? "cnblogs_xishuai" : customer.FirstName)} {customer.LastName}";

일이 아직 끝나지 않았는데 내가 고친 것이 많지 않다고 생각한다. 나는 모든 문법 특성의 코드를 고친 다음에 자신감이 넘치는'Build'를 고쳤다고 생각한다. 그리고 다음과 같은 상황이 발생했다.
오류 메시지: "Metadata file'xxxxx.dll'could not be found"CSC, 보기만 해도 골치 아픈 질문입니다. Google을 샅샅이 뒤졌습니다. 기본적인 해결 방법은 다음과 같습니다.
  • Clean every project individually (Right click> Clean).
  • Rebuild every project individually (Right click> Rebuild).
  • Rebuild the startup project.

  • 무효, 다시 검색, 다시 시도, 무효, 다시 검색, 다시 시도...
    한 가지 문제를 해결해라. 만약 방향이 틀렸다면, 너는 비참하게 죽을 것이다. 나는 지금 이렇다.
    마지막에 맞히면 어때요?역시 코드 문제입니다. 한 라이브러리의 문법 특성 코드가 고쳐지지 않았습니다. 어머나, 왜 VS2015 CTP의 오류 알림이 나타나지 않고 엉망진창인 것을 보였는지 마지막으로 발견한 곳은 Output(출력 창)입니다.
    error CS1009: Unrecognized escape sequence

    이런 오류를 보고 나는 코드를 고쳐야 한다는 것을 깨달았다.

    좋은 웹페이지 즐겨찾기