![](/img/trans.png)
[英]How to make C# write English (non-localized) number format by default?
[英]Cannot use non-localized resource in C# application
如上一個問題所述 ,我擁有一組字符串資源,這些字符串資源在程序的生存期內不會更改,但是只能通過對字符串列表進行昂貴的操作才能獲得:
public static class Patterns
{
Public static readonly string StateUS =
@"\b(?<STATE>" + CharTree.GenerateRegex(FixedLists.StateUS) + @")\b";
Public static readonly string Countries =
@"\b(?<STATE>" + CharTree.GenerateRegex(FixedLists.Countries) + @")\b";
//.....
}
為了提高性能,我用T4生成了所需的字符串,該字符串從文件中讀取列表並輸出資源文件Regex.restext
:
StatesUS=A(LA(SK|BAM)A|RKANSAS)|B.....
Countries=UNITED (STATES|KINGDOM)|CA(NAD|MBODI)A.....
然后將此文件編譯並復制到目標目錄的構建后版本中:
cd $(ProjectDir)
"C:\Program Files (x86)\Microsoft SDKs\Windows\v8.0A\bin\NETFX 4.0 Tools\resgen.exe" /compile Regex.restext
copy /Y Regex.resources "$(TargetDir)MyProject.Resources.Lists.resources"
但是,當我嘗試在Patterns
的靜態構造函數中加載這些值時:
ResourceManager rm = ResourceManager.CreateFileBasedResourceManager("MyProject.Resources.Lists", @".\", null);
StateUS = rm.GetString("StateUS")
我收到以下錯誤:
InnerException: System.Resources.MissingManifestResourceException
Message=Could not find any resources appropriate for the specified culture (or the neutral culture) on disk.
System.Resources.FileBasedResourceGroveler.GrovelForResourceSet(CultureInfo culture, Dictionary`2 localResourceSets, Boolean tryParents, Boolean createIfNotExists, StackCrawlMark& stackMark)
System.Resources.ResourceManager.InternalGetResourceSet(CultureInfo requestedCulture, Boolean createIfNotExists, Boolean tryParents, StackCrawlMark& stackMark)
System.Resources.ResourceManager.InternalGetResourceSet(CultureInfo culture, Boolean createIfNotExists, Boolean tryParents)
但這是一個與文化無關的項目-資源僅用於存儲。 那么,為什么我需要完全指定一種文化? 我將如何/在何處這樣做?
如果我采用錯誤的方式加載資源,哪種更好的方法呢?
此異常告訴您未找到MyProject.Resources.Lists.resources文件。 文件路徑或文件名本身可能不正確。 我通過創建一個示例應用程序驗證了您的示例,它運行良好。
您應該將@".\\"
替換為Path.GetDirectoryName(Assembly.GetExecutingAssembly().Location
以確保您為資源文件使用了正確的位置。如果要設置Directory.SetCurrentDirectory("D:\\\\");
在應用程序內的任何位置, @".\\"
都會在此處查找您的資源。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.