我已经为三个项目的以下文件夹结构:的ResourceManager回落到默认的资源,而不是来自于卫星装配读书
MyClassLibrary1
Class1.cs
Resources\
en-GB\
Strings.en-GB.txt
Strings.resx
Strings.designer.cs (auto-generated)
MyClassLibrary2 (references MyClassLibrary1)
Class1.cs
MyAppExe (references MyClassLibrary1 and MyClassLibrary2)
Program.cs
在MyClassLibrary1项目:
In Strings.resx, I've string resources defined, let's say:
<data name="SchoolString"><value>Preschool</value></data>
In Strings.en-GB.txt, I have:
SchoolString=Playgroup
MyClassLibrary1的项目属性 - >预 - 建立,我有以下内容:
CD $(ProjectDir)Resources
FOR /D %%1 IN (*) DO (
CD "%%1"
resgen.exe "Strings.%%1.txt"
if %errorlevel% 0 al.exe /t:lib /culture:"%%1" /embed:"Strings.%%1.resources" /out:MyClassLibrary1.resources.dll
if not exist "$(TargetDir)%%1" md "$(TargetDir)%%1"
move /Y "MyClassLibrary1.resources.dll" "$(TargetDir)%%1"
CD ..
)
在MyAppExe项目下,在Program.cs中:
static void Main() {
Strings.Culture = new CultureInfo("en-GB");
Trace.WriteLine(Strings.SchoolString);
}
的问题是,ResourceManager的,由于某种原因,不断回落到默认的资源文件(嵌入在MyAppExe)。请帮我理解我在这里做错了什么。
无论我尝试什么,我都会得到的输出是“学龄前”而不是“游戏群”。这就像卫星组件没有得到解决。
卫星程序集必须存在于具有与区域性相同名称的EXE目录的子目录中。您的情况下名为“en-GB”的目录。它看起来不像你的构建事件处理这个。 –
实际上,它会转到bin \ Debug \ zh-CN \文件夹 – gplusplus
@ hans-passant:刚刚遇到此知识库文章 - [KB839861](http://support.microsoft.com/kb/839861) - 我猜测我必须更改为'resgen.exe“字符串。%% 1.txt”“MyClassLibrary1.Resources.Strings。%% 1.txt”并更改为al.exe/t:lib/embed:“MyClassLibrary1 .Resources.Strings。%% 1.resources“/ out:”MyClassLibrary1.resources.dll“,用于al.exe生成正确的命名空间名称。我今晚会试试看看是否解决了这个问题。 – gplusplus