2017-06-21 13 views
1

私は、Dynamics NAVのアドインとして使用するプロジェクトを持っています。 英語が標準である現在使用されている言語で表示されるはずです。 これを確実にするために、CurrentCultureとCurrentUICultureを設定するメソッドがあります。.NETリソース&Dynamics NAV

Dynamics NAVの外部で実行されるテストプロジェクトの内部には、適切な翻訳がフォームに表示されます。

Dynamics NAVでアドインを使用する場合、フォームは常に英語で表示され、現在のカルチャと現在のUIカルチャを正しい言語に設定します(複数の場合にデバッグして確認します)。 Form1がform1.resxが含まれている場合は、

  • ローカライズフォームや
  • RESX-ファイルがresources.resxから区切られresources.de.resx form1.de.resx:

    は、私は2つのセットアップを試してみましたForm1とInitializeComponentの直後にコードで呼び出されます。
    NAV外のプログラムの開始:

結果は、どちらの場合も同じである翻訳NAV内部からプログラムを起動する
を成功:常に使用する標準リソース

詳細がある場合

は誰もが知っています私は行方不明ですか?

答えて

0

問題は非常に一般的なものでした。デリソースは「de」フォルダにコンパイルされました。その結果、NAVは頻繁にファイルを見つけることができませんでした。

に、AssemblyResolveは、この問題を修正:

Assembly CurrentDomain_AssemblyResolve(object sender, ResolveEventArgs args) 
{ 
    var location = Path.Combine(
     Path.GetDirectoryName(typeof(MyForm).Assembly.Location), 
     CultureInfo.CurrentCulture.Parent.Name, 
     args.Name.Substring(0, args.Name.IndexOf(",", StringComparison.OrdinalIgnoreCase)) + ".dll"); 

    if (File.Exists(location)) 
    { 
     return Assembly.LoadFrom(location); 
    } 

    return null; 
    } 
} 

心に留めておくべき唯一の詳細は、InitializeComponent関数が実行される前に、AssemblyResolveに加入することです。

関連する問題