T4 - 字段初始值设定项不能引用非静态字段、方法或 属性

T4 - A field initializer cannot reference the non-static field, method, or property

我在以 string firstLine 开头的最后一行出现错误:

<#+
    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'));
#>

错误是:

A field initializer cannot reference the non-static field, method, or property

最后两行在我项目的普通 C# 文件中完美运行。

问题出在 <#+ #>。在 <# 之后添加 + 表示里面的代码是 class 的一部分并且 class 的字段应该用静态成员、常量等初始化,或者使用 class 构造函数.

要将代码视为程序脚本,应将代码插入其中 <# #> 分。