[英]T4 template for PublicResXFileCodeGenerator
我想要執行以下操作:在我的Web.config中添加一個開關,每當打開它時,來自.resx文件的任何值都將與它來自的.resx文件的名稱一起出現。 這主要用於調試目的。
我目前的理解是,這樣做的方法是創建一個自定義T4模板,並使用它而不是PublicResXFileCodeGenerator
。
我試圖找到一個模板來執行PublicResXFileCodeGenerator
所做的事情,然后在此基礎上構建。 我的Visual Studio安裝中是否有這樣的模板? 如果沒有,我可以在線找到官方來源的模板嗎?
Visual Studio使用StronglyTypedResourceBuilder類將.resx文件轉換為“硬編碼”資源。 這就是為什么我認為在Visual Studio安裝中某處沒有類似的T4模板。
您可能想要創建自己的T4模板。 我沒有針對您的案例的現成模板,但這是我將如何開始並替換字符串資源的默認資源構建器:
打開T4模板中的.resx文件作為XDocument(.resx是xml格式)
<#@ assembly name="System.Xml" #> <#@ assembly name="System.Xml.Linq #> <#@ import namespace="System.Xml.Linq #> <# string inputFile = System.IO.Path.GetDirectoryName(this.Host.TemplateFile) + @"\\MyResourceFile.resx"; XDocument resDoc = XDocument.Load(inputFile); #>
迭代.resx文件中的所有元素並生成資源的屬性。 根據web.config中的設置,將資源文件名添加到返回值。
<# foreach(var dataElement in resDoc.Descendants("data") .Where(elem => elem.Attribute("type") == null) { #> public static string <#= dataElement.Attribute("name").Value #> { get { return ResourceManager.GetString("<#= dataElement.Attribute("name").Value #>") + ((bool.Parse(ConfigurationManager.AppSettings["DebugResources"])) ? " (MyResourceFile.resx)" : String.Empty); <# } #>
生成資源類的其余部分:資源管理器(您可以從原始Designer.cs文件中復制該資源管理器)並檢查如何處理圖像和其他資源類型。
希望這個想法有所幫助 也許我可以在某個時候想出一個完整且可重復使用的.tt。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.