我的 C#/WF 应用程序使用了一些文件,这些文件因不同的语言而异。这些文件不能作为资源放置在附属程序集中。但是,我希望将它们放在与附属程序集相同的目录中,但我需要知道程序集的实际位置(包括使用嵌入在二进制文件中的默认语言时的情况)。
例如,当应用程序自动切换到波兰语时,我希望检索位置:
D:\<应用程序文件夹>\pl-PL\
有没有办法这样做?请注意,我希望从程序集中检索此信息,而不是通过猜测文件夹位置。
在史蒂夫 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);
}
}