2015-01-15 2 views
1

내가 마지막 줄에 오류가 비 정적 필드, 메서드 또는 속성을 참조 할 수는 string firstLine 시작 :T4 - 필드 이니셜 라이저가

<#+ 
    int Year = (int)(DateTime.UtcNow.Year); 
    int Month = (int)(DateTime.UtcNow.Month); 
    int Day = (int)(DateTime.UtcNow.Day); 

    int RevisionNumber = (int)(DateTime.UtcNow - new DateTime(2013,1,1)).TotalDays; 

    string multiLine = System.IO.File.ReadAllText("C:\\Users\\kozub.sebastian\\Documents\\Visual Studio 2012\\Projects\\Ris\\RisSystem\\RisSystem\\Properties\\AssemblyInfo.cs"); 
    string firstLine = multiLine.Substring(0, multiLine.IndexOf('\n')); 
#> 

오류는 다음과 같습니다

필드 이니셜 라이저는 비 정적 필드, 메서드 또는 속성을 참조 할 수 없습니다.

마지막 두 줄은 내 프로젝트의 일반적인 C# 파일에서 완벽하게 작동합니다.

+0

* 변수 *로 사용할 때 올바르게 작동하지만 필드는 사용할 수 없습니다. – stuartd

+0

클리어 할 수 있습니까? –

+0

[C# 사양 (10.4.5.2 인스턴스 필드 초기화)] (http://msdn.microsoft.com/en-us/library/aa645759%28v=vs.71%29.aspx)에는 몇 가지 추가 정보가 있습니다. "it 변수 이니셜 라이저가 단순 이름을 통해 모든 인스턴스 멤버를 참조 할 때 컴파일 타임 오류가 발생합니다. "- 따라서 인스턴스 필드는 다른 인스턴스 필드를 참조 할 수 없습니다. 그러나 상수를 참조 할 수는 있습니다. – stuartd

답변

0

문제는 <#+ #>입니다. <# 뒤에 +을 추가하면 내부의 코드가 클래스의 일부이며 클래스 필드가 정적 멤버, 상수 등으로 초기화되거나 클래스 생성자를 사용하여 초기화되어야한다고 나와 있습니다.

절차 적 스크립트로 코드를 처리하려면 코드를 <# #> 마크로 삽입해야합니다.

관련 문제