2009-10-21 181 views
0

我创建了一个新的VS解决方案,该解决方案需要包含来自另一个解决方案的文件的修改子集。两种解决方案都有一个默认的“Microsoft.Windows.Controls”命名空间。旧解决方案中的程序集名为“WPFToolkit”,新程序集名称为“DatePicker”。我复制到新解决方案中的一个文件是名为“ExceptionStringTable.txt”的嵌入式资源。内容如下所示,虽然我不知道它是什么格式:将文本转换为.resources文件

; DataGrid Selection Commands 
DataGrid_SelectAllCommandText=Select All 
DataGrid_SelectAllKey=Ctrl+A 
DataGrid_SelectAllKeyDisplayString=Ctrl+A

我设置了文件的“生成操作”为“嵌入的资源”像原来的解决方案。在运行时,它的加载这样的:

private static ResourceManager _resourceManager = 
    new ResourceManager("ExceptionStringTable", typeof(SR).Assembly);

在执行

_resourceManager.GetString(id.String)
我收到此运行时异常代码:

System.Resources.MissingManifestResourceException发生 消息=“找不到合适的任何资源确保\“ExceptionStringTable.resources \”在编译时被正确嵌入或链接到程序集\“DatePicker \”中,或者所有需要的附属程序集都是可加载且完全签名的。

编程上市程序集的资源名称,我得到这个:

 DatePicker.g.resources 
    Microsoft.Windows.Controls.Resources.ExceptionStringTable.txt 
    Microsoft.Windows.Controls.Properties.Resources.resources

什么我必须做的,这样ExceptionStringTable.txt被转换成它的.resources等同然后嵌入到我的组件,使得URI“ ExceptionStringTable“找到它?

回答

1

您需要将TXT文件转换成一个.resource文件:

resgen.exe ExceptionStringTable.txt 

这将输出一个ExceptionStringTable.resources文件。这个文件需要添加为嵌入式资源

您可能想要检查旧的项目文件以查看是否存在postbuild任务或者是否会自动执行此操作。

UPDATE:

你最简单的方法可能是.txt文件转换为.resx文件:

resgen.exe ExceptionStringTable.txt ExceptionStringTable.resx 

,然后添加该文件作为嵌入式国土资源。之后,您可以删除旧的.txt文件。