在T4模板中使用Enum.GetValues不起作用



我必须遵循.tt模板:

<#@ template debug="true" hostspecific="true" language="C#" compilerOptions="/langversion:10" #>
<#@ assembly name="System" #>
<#@ assembly name="System.Runtime" #>
<#@ assembly name="System.Core" #>
<#@ import namespace="System" #>
<#@ import namespace="System.Runtime" #>
<#@ import namespace="System.Linq" #>
<#@ import namespace="System.Text" #>
<#@ import namespace="System.Collections.Generic" #>
//...
<#@ output extension=".cs" #>
<#
var myEnum =  System.Enum.GetValues(typeof(MyEnum));

#>

我将得到以下错误:

正在运行转换:System.IO.FileNotFoundException:无法加载文件或程序集"System.Runtime,版本=6.0.0.0,Culture=neutral,PublicKeyToken=b03f5f7f11d50a3a'或其一个依赖关系。系统找不到指定的文件。文件名:'System.Runtime,版本=6.0.0.0,区域性=中性,PublicKeyToken=b03f5f7f11d50a3a'Microsoft.VisualStudio.TextTemplate4D7E7108009F697C7036AA3982FCAC502862F98EAECCE32056786825F6A28CB866B97B562037BD24FB0BF58428936B28EDC4EAEBA43FAE108D3C1E0E59F.GeneratedTextTransformation.TransformText((在System.Dynamic.UpdateDelegates.UpdateAndExecute1[T0,TRet](调用站点站点,T0 arg0(Microsoft.VisualStudio.TextTemplateing.TransformationRunner.PerformTransformation((

这似乎意味着找不到System.Runtime

以下代码适用于我在Visual Studio 2022中的Net6项目。您使用的VS版本/项目类型是什么?

<#@ template debug="true" hostspecific="true" language="C#" compilerOptions="/langversion:10" #>
<#@ assembly name="System" #>
<#@ assembly name="System.Runtime" #>
<#@ assembly name="System.Core" #>
<#@ import namespace="System" #>
<#@ import namespace="System.Runtime" #>
<#@ import namespace="System.Linq" #>
<#@ import namespace="System.Text" #>
<#@ import namespace="System.Collections.Generic" #>
<#@ output extension=".cs" #>
<#
var myEnum =  System.Enum.GetValues(typeof(MyEnum));
foreach (var member in myEnum)
{
this.WriteLine($"// {member}");
}

#>
<#+
enum MyEnum {
Red,
Green,
Blue
}
#>

最新更新