Основная проблема, которую я хочу решить, заключается в том, что у меня есть настольное (winforms) приложение, которое может использовать разные языки, и оно использует их через менеджер ресурсов (приложение устанавливает информацию о культуре потоков). Этот информационный файл сборки приложения содержит следующее:
[assembly: System.Resources.SatelliteContractVersionAttribute("1.0.0.0")]
Теперь я хотел бы обновить свои спутниковые сборки, но я не хочу менять основное приложение. (Согласно: https://docs.microsoft.com/en-us/dotnet/api/system.resources.satellitecontractversionattribute?view=netcore-3.1 это возможно).
Поэтому я попытался и выбрал свой немецкий файл ресурсов, который находится в папке AppFolder / de / Lang.resources.dll, которую я создал. следующий файл политики с именем: «Lang.resources.config» рядом с Lang.resources.dll
<?xml version="1.0" encoding="utf-8" ?>
<configuration>
<runtime>
<assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1">
<dependentAssembly>
<assemblyIdentity name="Lang.resources"
publicKeyToken="bd317adc1d7d9856"
culture="de" />
<bindingRedirect oldVersion="1.0.0.0"
newVersion="1.1.0.0"/>
</dependentAssembly>
</assemblyBinding>
</runtime>
</configuration>
После этого я выполнил следующую команду в приглашении разработчика VS2017 (прежде всего я перешел в / AppFolder / de / folder)
al /link:Lang.resources.config /out:Policy.1.1.Lang.resources.dll /keyfile:key.snk /Platform:anycpu /v:1.1.0.0
Файл политики успешно создан.
И я добавил в глобальный кеш сборок:
gacutil /l Policy.1.1.Lang.resources.dll
Теперь я запустил основной приложение, но оно не использует файл ресурсов немецкого языка. Я пытался отладить Fusion Log Viewer, но его содержимое пусто. (Дополнительная информация: мое приложение не добавило файл Lang.resource.dll в GA C, ни более новую, ни более старую версию)
Я думаю, что что-то пропустил или пытаюсь сделать это неправильно и Я надеюсь, что вы сможете помочь решить эту проблему. Заранее благодарю за ответы!