我正在尝试创建一个 T4 模板,它将获取我的应用程序全局资源,循环遍历静态属性并创建一个带有 const string
属性的静态类,这样我就可以通过使用强类型来获取资源名称作为 string
。
以下是当前的代码:
<#@ template debug="true" hostSpecific="true" #>
<#@ include file="EF.Utility.CS.ttinclude"#>
<#@ output extension=".cs"#>
<#@ import namespace="System" #>
<#@ import namespace="System.IO" #>
<#@ import namespace="System.Diagnostics" #>
<#@ import namespace="System.Linq" #>
<#@ import namespace="System.Collections" #>
<#@ import namespace="System.Collections.Generic" #>
<# CodeGenerationTools code = new CodeGenerationTools(this);
MetadataLoader loader = new MetadataLoader(this);
CodeRegion region = new CodeRegion(this, 1);
MetadataTools ef = new MetadataTools(this);
string namespaceName = code.VsNamespaceSuggestion();
if (!String.IsNullOrEmpty(namespaceName))
{ #>
namespace <#=code.EscapeNamespace(namespaceName)#>
{
<# PushIndent(CodeRegion.GetIndent(1));
} #>
public static class ResourceStrings {
<# var props = typeof(Resources).GetProperties(BindingFlags.Static);
foreach (var prop in props) { #>
public const string <#= prop.Name #> = "<#= prop.Name #>";
<# } #>
}
<# if (!String.IsNullOrEmpty(namespaceName))
{
PopIndent(); #>
}
<# } #>
<#+
// Insert any template procedures here
#>
问题在于它无法在
typeof()
中找到 Resources
命名空间。 Resources
命名空间是我的 Localize.designer.cs 文件(Localize.resx 的自动生成文件)的命名空间。我错过了什么?