私の 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);
}
}