Nil*_*ils 5 windows-services localization
我已经搜索了很长时间,但这个主题似乎很特别。我什么都没想到。也许这里的专家可以帮助我。
我运行一个 Windows 服务,它访问一些数据库并进行一些计算。如果出现故障,则会在日志文件中生成一个条目。我的愿望是将这些条目本地化。到目前为止,除了这个 Windows 服务之外,这对每个项目都很好。
我使用资源管理器和本地化资源文件。在运行时,CultureInfo 更改为:
Thread.CurrentThread.CurrentUICulture = new CultureInfo(this.language);
Run Code Online (Sandbox Code Playgroud)
其中语言是从配置文件中读取的值。更改在下一行非常明确:
LogService.WriteEntry(CultureInfo.CurrentUICulture.Name, EventLogEntryType.Information);
Run Code Online (Sandbox Code Playgroud)
这有效并返回正确的 CultureInfo。资源文件命名正确,但仍然无法访问本地化文件(在这种情况下为“de”)并且使用默认(英文)文件。我将资源文件添加到安装项目中的项目输出中。
编辑:在其他项目中,以下工作正常,但不适用于 Windows 服务:
ResourceManager locRM = new ResourceManager("WindowsService.ResWindowsService", Assembly.GetExecutingAssembly());
Run Code Online (Sandbox Code Playgroud)
似乎 Windows 服务找不到附属程序集,然后回退到似乎在 Windows 服务 exe 文件中的中性资源文件。有没有人知道如何让 Windows 服务找到卫星程序集。
编辑 2:解决方案
一位亲爱的同事提供了帮助。我强烈地命名了附属程序集并在 GAC 中注册了它。这就是解决方案。现在 Windows 服务可以访问它。详细步骤:在安装项目的文件系统编辑器中:添加特殊文件夹->全局程序集缓存文件夹。添加文件 -> 我在这里添加了资源文件然后在项目属性 -> 签名标记“签署程序集”并创建一个新的密钥文件。
就是这样。
谢谢,尼尔斯
| 归档时间: |
|
| 查看次数: |
1735 次 |
| 最近记录: |