トップページ > プログラム > 2014年09月07日 > HbYwcme0

書き込み順位&時間帯一覧

1 位/199 ID中時間01234567891011121314151617181920212223Total
書き込み数0110002000000010000030008



使用した名前一覧書き込んだスレッド一覧
デフォルトの名無しさん
C#, C♯, C#相談室 Part84
Visual Studio 2013 part4

書き込みレス一覧

C#, C♯, C#相談室 Part84
578 :デフォルトの名無しさん[sage]:2014/09/07(日) 01:39:26.10 ID:HbYwcme0
C#の自作 Formアプリ.exe と、自作の クラス.dll を
ILMerge.exe で合体できたのですが、
Fromアプリ.exe の Main() の先頭で
Thread.CurrentThread.CurrentUICulture = CultureInfo.CreateSpecificCulture("en");
のように言語を英語に変えているのですが、合体前は上手く日本語から英語に変わったのに、
合体後は日本語のままです。ILMerge.exe使うとこういうこと起こりますか?
解決方法ありますか?
C#, C♯, C#相談室 Part84
580 :デフォルトの名無しさん[sage]:2014/09/07(日) 02:53:00.92 ID:HbYwcme0
>>579
レスありがとうございました。

>まず自分を疑おう。
そうでした。

>カルチャ変更後のカレントカルチャ出力したら変わってないの?
変わっていました。

>ローカライゼーションは何を使ってんの?
既定と英語です。

>自作?サテライトアセンブリ?
日本語と英語の多国語対応のFormを初めて作ったので、サテライトアセンブリ
というような用語も今初めて知ったのですが、プロジェクトのフォルダには
リソースファイルが2つ出来ていて
   Resources.resx
   Resources.en.resx
があります。
ILMergeする前は、カルチャ変更でリソースが切り替わっていたのですが、
ILMergeしたら、いつも日本語リソースが読み込まれているようです。
どうしたら良いでしょうか?
C#, C♯, C#相談室 Part84
584 :デフォルトの名無しさん[sage]:2014/09/07(日) 06:06:34.97 ID:HbYwcme0
>>582
わざわざ実験して頂いてありがとうございます。

教えて頂いたアドバイスを元に試行錯誤しているのですが、カルチャを"en"にしても
マージ後のexeで英語リソースが読み込まれません。

実験のためにボタン1個だけのフォームと、簡単なクラス作って
フォームは既定と英語の多言語設定にしました。

マージはこんなふうにしています。

 ILMerge.exe /ndebug /targetplatform:v4 /out:MyFrom1Merge.exe MyFrom1.exe /log ClassLib1.dll

プロジェクトはビルドすると、exeやdllは

 bin\Debug\MyForm1.exe
 bin\Debug\ClassLib1.dll
 bin\Debug\en\MyFrom1.resources.dll

が出来ています。
C#, C♯, C#相談室 Part84
585 :デフォルトの名無しさん[sage]:2014/09/07(日) 06:07:32.11 ID:HbYwcme0
↑の続き

582さんに教えて頂いたのは
> ILMerge /out:A_merged.resources.dll A.resources.dll B.resources.dll
のようにAとBの二つのリソースのdllがありますが、
私が実験で作ったプロジェクトでは、MyFrom1.resources.dll だけです。
この中に英語のリソースが入っているんですよね。

ILMergeをどのように実行すれば良いのか分りません。

それと、
>ちなみにマージドexeでも[プロセスにアタッチ]からのデバッグで例外ブレークポイント使って原因特定出来るね
>Main先頭でメッセージボックス表示して止まってる間にVSからアタッチすると楽
を試したのですが、アタッチするところまでは出来たのですが、例外ブレークポイントというのは使った事が
ないのでやり方が良く分りませんでした。
C#, C♯, C#相談室 Part84
606 :デフォルトの名無しさん[sage]:2014/09/07(日) 14:23:57.06 ID:HbYwcme0
594さん、
わざわざ実験して頂きまして大変有難うございます。

>とりあえず実行時にはMyFrom1Merge.resources.dllが必要で、
>プロジェクトのプロパティからアセンブリ名を変え(MyFrom1Merge)てビルドすれば得られるよ
>そのDLLは退避しておいて実行フォルダに配置ね

この方法で出来ました!でも、DLLは実行フォルダではなくて
MyFrom1Merge.exe
en\MyFrom1Merge.resources.dll
のように、enフォルダの中に置く必要がありました。


>サテライトアセンブリが1つでもマージ出来たよ
>ILMerge.exe /ndebug /targetplatform:v4 /out:MyFrom1Merge.resources.dll MyFrom1.resources.dll /log

私も試してみましたが、確かにマージは出来ますが、私の場合は上で報告したように、
実行フォルダ下のenフォルダに英語リソースファイルが無いと、リソースが有効にはならないようで、
カルチャをenにしても日本語になってしいました。

というわけで、ほぼやりたいことが出来ましたが、enフォルダにリソースを置く必要があるので、
この点をどうにか解決したいです。
Visual Studio 2013 part4
608 :デフォルトの名無しさん[sage]:2014/09/07(日) 20:04:18.34 ID:HbYwcme0
VS2013で既定の設定を『VB』にしていて、それを『全般的な設定』
に変えたいのですが、設定をリセットしてやり直せば出来るのは
知っているのですが、でもそうすると、それ以外のメニューや
ツールのアイコンなど自分で設定した内容もリセットされてしまいます。
どうすれば、これらを保存したまま、既定の設定を変えられますか?
Visual Studio 2013 part4
610 :デフォルトの名無しさん[sage]:2014/09/07(日) 20:24:51.13 ID:HbYwcme0
>「全般」にしたい部分
インポートの時に、それがどのチェックボックスの項目
に該当するのか分りません。
どれなのか教えてください。
Visual Studio 2013 part4
612 :デフォルトの名無しさん[sage]:2014/09/07(日) 20:40:52.24 ID:HbYwcme0
教えてくれよ。さっぱりわからない。もう30回くらいリセットして
インポートし直しているが分らない。


※このページは、『2ちゃんねる』の書き込みを基に自動生成したものです。オリジナルはリンク先の2ちゃんねるの書き込みです。
※このサイトでオリジナルの書き込みについては対応できません。
※何か問題のある場合はメールをしてください。対応します。