방금 Visual Studio 2015 (RTM)의 새로 출시 된 Community Edition을 설치했고 VS2015 및 C # 6.0에서 작동하는 오픈 소스 프로젝트 를 얻으려고합니다 .
내 .cs 중 일부는 프로젝트간에 공유됩니다. 이렇게하면 PCL 버전 (기능이 제한됨)과 핵심 라이브러리의 '전체'버전을 모두 빌드 할 수 있습니다.
그러나 어떤 이유로 일부 코드 파일은 전체 프로젝트에서 제대로 빌드되지만 PCL 프로젝트 (모든 것이 C # 5 및 Visual Studio 2013에서 컴파일 됨)에서 빌드되면 실패합니다. 컴파일러 cref
는 PCL 버전을 빌드 할 때 XML 주석에서 를 해결할 수없는 것 같습니다 . 다음은 내 컴퓨터에서 실패하는 간단한 코드 예제입니다.
/// <summary></summary>
public class A
{
// Compile error on next line:
/// <summary><see cref="Y(Type)"/>.</summary>
public void X() { }
/// <summary></summary>
/// <param name="x"></param>
public void Y(Type x) { }
/// <summary></summary>
/// <param name="i"></param>
public void Y(int i) { }
}
내가 얻는 컴파일 오류는 다음과 같습니다.
CS1580 XML 주석의 매개 변수 유형에 대한 잘못된 유형 cref 속성 : 'Y (Type)'SimpleInjector.PCL
이상한 점은 XML 주석의 IntelliSense 지원 (와우! 이제 XML 주석에 IntelliSense가 있습니다!)이 실제로 작동 Y(Type)
하고 드롭 다운 목록을 통해 메서드 를 선택할 수 있다는 것입니다. 그러나 이것을 선택하면 컴파일 오류가 생성됩니다 (PCL에서만).
내 질문은 물론 이것을 고치는 방법입니까? 이것이 일반적인 문제입니까? 프로젝트의 구성이 이것과 관련이 있습니까? 알려진 버그입니까?
C # / VB 언어 팀의 개발자 인 David Kean 은 Twitter에서 매우 빠르게 응답하고 이에 대해 조사했습니다. 그는 이것이 실제로 Roslyn의 버그이자 알려진 제한 사항이라고 제게보고했습니다. 조사 후 그는 여기 와 여기 에 Github에 대한 문제를보고했습니다 .
여기에는 기본적으로 두 가지 문제가 있습니다.
Type
라는 내부 유형이있는 것 같지만 Type
공개와는 다릅니다 System.Type
. 이 내부 Type
유형은 내 코드에는 존재하지 않지만 Roslyn에는 존재하며 Roslyn은 혼란스러워합니다.이 문제에 대한 현재 해결 방법은 다음과 같은 유형을 완전히 한정하는 것입니다.
/// <summary><see cref="Y(System.Type)"/>.</summary>
public void X() { }
참고 : Assembly
. 해당 유형을 System.Reflection.Assembly
.
이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.
침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제
몇 마디 만하겠습니다