我们的软件确实有一种非常古老的,对于今天的可能性来说,可能是一种非常奇怪的可翻译方式。原因可能是,可翻译的字符串来自非常不同的地方,如VB6 dlls、.NET dlls、Access表单/报表、元数据……以此类推。嗯,事实就是这样。
一般来说,有一个工具可以从不同的来源提取所有可翻译的字符串,并将它们转换为可以用专业翻译工具翻译的格式。在此之后,只要有人想要翻译,翻译就会转换回软件可以使用的格式。
对于.NET动态链接库,该工具从dll中提取所有资源,并在翻译后将它们放入单独的文本文件中,如果软件需要翻译,它将从这些文本文件中读取翻译后的资源。
现在来谈谈我的问题..。我想把一个xml文件作为资源放到一个dlls中,这个xml文件不应该被提取出来进行翻译,也不应该从包含翻译后的字符串的文本文件中读取。
但是现在,确实发生了这种情况,提取器提取该xml文件的内容进行翻译,翻译后的软件在翻译后的文本文件中查找该xml文件。
当然,我可以尝试通过更改解压程序来跳过文件资源,并修复软件中决定在哪里查找资源的部分来解决这个问题。但我们软件的这一部分并不完全是我的专长。
因此,我想您可能知道一种方法,可以将xml文件放入dll中,并在不将其作为资源的情况下访问它。
资源文件的“构建操作”设置有什么用处?现在,我的资源文件的“构建操作”是" resource“。其他所有“构建操作”设置(如"Embedded Resource“、"Content”、"AdditionalFiles“、"ApplicationDefinition”等)做什么?在这个方向上做一些研究会有帮助吗?
发布于 2021-02-25 19:02:16
在进行了大量的搜索和尝试之后,我删除了文件资源,并将带有"EmbeddedResource“的xml文件作为”构建操作“添加到项目中。
之后,我可以使用如下代码获取xml文件的内容:
string xmlFile;
//to find out the full name of the embedded resource use the following line
//string[] resourceNames = System.Reflection.Assembly.GetCallingAssembly().GetManifestResourceNames();
using (System.IO.TextReader reader = new System.IO.StreamReader(System.Reflection.Assembly.GetCallingAssembly().GetManifestResourceStream(), System.Text.Encoding.UTF8))
{
xmlFile = reader.ReadToEnd();
reader.Close();
}
https://stackoverflow.com/questions/66364972
复制相似问题