Развертывание спутниковых сборок .NET в определенной папке - PullRequest
7 голосов
/ 16 декабря 2011

Я работаю над приложением C # .NET и выполняю локализацию с помощью файлов ресурсов.У меня есть файлы ресурсов для конкретной культуры, такие как:

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

После сборки в корневой папке приложения находятся папки типа fr-FR, ja-JP и т. Д.

Можно ли переместить все файлы ресурсов и папки локализации в папкута же папка, например Languages?

Обновление 1:

Я решил это с помощью кода ниже.кажется, что когда я копирую приложение в другое место, оно не может загружать ресурсы.Как я вижу, файл application.config также должен быть там.И если я сделаю app.config как встроенный ресурс, он не работает.

Есть ли способ, как сделать это без файла .config, необходимого в том же каталоге?

Спасибо

Ответы [ 2 ]

8 голосов
/ 16 декабря 2011

По умолчанию сателлитные сборки размещаются в подкаталогах непосредственно под исполняемым файлом.Если вы хотите переместить все 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 голос
/ 18 августа 2012

Мои файлы ResX в разделе Свойства:

  • Resources.resx
  • Resources.tr-TR.resx

Я помещаю информацию времени выполненияв файл конфигурации приложения, как описано выше, но без изменений.по-прежнему создает папку tr-TR в каталоге исполняемого файла, а не в папке Languages.Что, возможно, я здесь делаю не так?Спасибо

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