在特定文件夹中部署.NET附属程序集

Kri*_*arp 7 .net resources localization satellite-assembly

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

  • MyResource.resx;
  • MyResource.fr-FR.resx;
  • MyResource.ja-JP.resx;

构建之后,在应用程序根文件夹中有文件夹fr-FR,ja-JP等等.

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

更新1:

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

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

谢谢

Joã*_*elo 8

默认情况下,附属程序集放在可执行文件正下方的子目录中.如果你想所有的移动fr-FR,ja-JP以及剩余对其他文化的文件夹到同一个文件夹Languages,你可以通过添加以下进入应用程序配置文件做到这一点:

<configuration>
  <runtime>
    <assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1">
      <probing privatePath="Languages"/>
    </assemblyBinding>
  </runtime>
</configuration>
Run Code Online (Sandbox Code Playgroud)

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