2015-01-15 1 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

Проблема с <#+ #>. Добавление + после <# говорит, что код внутри является частью класса, а поля класса должны быть инициализированы статическими членами, константами и т. Д. Или с использованием конструктора классов.

Для обработки кода в качестве процедурного сценария код должен быть вставлен внутри <# #>.