我正在开发一个C#.NET应用程序,我正在使用资源文件进行本地化。 我有文化特定的资源文件,如:
构建后,在应用程序根文件夹中有fr-FR
,ja-JP
等文件夹。
是否可以将所有本地化资源文件和文件夹移动到同一文件夹中,例如Languages
?
更新1:
我用下面的代码解决了这个问题。 似乎当我将应用程序复制到另一个地方时,它无法加载资源。正如我所看到的,application.config文件也需要存在。如果我将app.config作为嵌入资源,它就无法工作。
有没有办法,如何在没有同一目录中所需的.config文件的情况下进行此操作?
由于
答案 0 :(得分:8)
默认情况下,附属程序集放在可执行文件正下方的子目录中。如果要将所有fr-FR
,ja-JP
和其他文化的剩余文件夹移动到同一文件夹Languages
,可以通过在应用程序配置文件中添加以下条目来实现:
<configuration>
<runtime>
<assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1">
<probing privatePath="Languages"/>
</assemblyBinding>
</runtime>
</configuration>
这将指示在搜索程序集时,CLR应在默认位置以及privatePath
元素的probing
属性指定的目录中搜索。您可以指定应用程序可执行文件下面的任何目录。指定多个子目录时,需要用分号分隔每个子目录。
答案 1 :(得分:1)
属性下的我的ResX文件如下:
我将运行时信息放入应用程序配置文件中,如上所述但没有变化。仍然在可执行路径下创建一个tr-TR文件夹,而不是在Languages文件夹下。我可能在这里做错了什么?感谢
<configuration>
...
<runtime>
...
</runtime>
</configuration>