Мое приложение C#/WF использует несколько файлов, которые различаются для разных языков. Эти файлы не могут размещаться в качестве ресурсов во вспомогательных сборках. Однако я хочу поместить их в те же каталоги, что и вспомогательные сборки, но мне нужно знать, где на самом деле находится сборка (включая ситуацию, когда используется язык по умолчанию, встроенный в двоичный файл).
Например, когда приложение автоматически переключается на польский язык, я хочу восстановить местоположение:
D:\‹папка приложения›\pl-PL\
Есть ли способ сделать это? Обратите внимание, что я хочу получить эту информацию из сборки, а не угадывая местоположение папки.
С помощью Steve B вот решение:
string FindSatelliteAssemblyLocation(CultureInfo culture)
{
if (culture == CultureInfo.InvariantCulture)
return Path.GetDirectoryName(Application.ExecutablePath);
try
{
Uri location = new Uri(Assembly.GetExecutingAssembly().GetSatelliteAssembly(culture).CodeBase);
return Path.GetDirectoryName(location.LocalPath);
}
catch
{
return FindSatelliteAssemblyLocation(culture.Parent);
}
}