首页 文章

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

提问于
浏览
7

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

  • MyResource.resx;

  • MyResource.fr-FR.resx;

  • MyResource.ja-JP.resx;

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

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

更新1:

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

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

谢谢

2 回答

  • 1

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

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

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

  • 8

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

    • Resources.resx

    • Resources.tr-TR.resx

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

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

相关问题