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

在特定文件夹中部署.NET附属程序集,.net,localization,resources,satellite-assembly,.net,Localization,Resources,Satellite Assembly,我正在开发一个C#.NET应用程序,并且正在使用资源文件执行本地化。 我有特定于区域性的资源文件,如: MyResource.resx MyResource.fr-fr.resx MyResource.ja-JP.resx 构建后,在应用程序根文件夹中有一些文件夹,如fr-fr、ja-JP等 是否可以将所有本地化资源文件和文件夹移动到同一文件夹中,例如语言 更新1: 我用下面的代码解决了这个问题。 似乎当我将应用程序复制到另一个地方时,它无法加载资源。正如我所看到的,application.

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

  • MyResource.resx
  • MyResource.fr-fr.resx
  • MyResource.ja-JP.resx
构建后,在应用程序根文件夹中有一些文件夹,如
fr-fr
ja-JP

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

更新1:

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

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


谢谢

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

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


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

属性下的My ResX文件如下:

  • Resources.resx
  • Resources.tr-tr.resx
如上所述,我将运行时信息放入应用程序配置文件中,但没有任何更改。仍在可执行路径下创建tr文件夹,而不是在语言文件夹下。我可能做错了什么?谢谢

<configuration>
...
<runtime>
...
</runtime>
</configuration>

...
...

它是一个库项目,例如dll吗?不,它是桌面应用程序。你需要自己移动文件夹(我是通过后期构建步骤完成的)。“编辑到您的配置设置”仅控制搜索额外程序集的方式,而不控制它们写入的位置。