8

我正在开发一个 C# .NET 应用程序,并且正在使用资源文件执行本地化。我有特定于文化的资源文件,例如:

  • 我的资源.resx;
  • MyResource.fr-FR.resx;
  • MyResource.ja-JP.resx;

构建后,在应用程序根文件夹中,有 , 之类的文件fr-FRja-JP

例如,是否可以将所有本地化资源文件和文件夹移动到同一个文件夹中Languages

更新1:

我用下面的代码解决了这个问题。似乎当我将应用程序复制到另一个地方时,它无法加载资源。正如我所看到的,application.config 文件也需要在那里。如果我将 app.config 作为嵌入资源,它就不起作用。

有没有办法,如何在没有同一目录中需要的 .config 文件的情况下做到这一点?

谢谢

4

2 回答 2

11

默认情况下,附属程序集位于可执行文件正下方的子目录中。如果要将其他文化的所有fr-FRja-JP剩余文件夹移动到同一文件夹Languages中,可以通过将以下条目添加到应用程序配置文件中来实现:

<configuration>
  <runtime>
    <assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1">
      <probing privatePath="Languages"/>
    </assemblyBinding>
  </runtime>
</configuration>

这将表明,在搜索程序集时,CLR 应在默认位置以及由元素privatePath属性指定的目录中进行搜索。probing您可以指定应用程序可执行文件下存在的任何目录。当指定多个子目录时,您需要用分号分隔每个子目录。

于 2011-12-15T22:26:21.443 回答
1

我在属性下的 ResX 文件如下:

  • 资源.resx
  • 资源.tr-TR.resx

如上所述,我将运行时信息放入应用程序配置文件中,但没有更改。仍在可执行路径下创建一个 tr-TR 文件夹,而不是在 Languages 文件夹下。我在这里做错了什么?谢谢

<configuration>
...
<runtime>
...
</runtime>
</configuration>
于 2012-08-18T14:37:22.530 回答