DOBON.NET DOBON.NETプログラミング掲示板過去ログ

al.exeのバージョンによる動作の違い

環境/言語:[WinXP and Win7,C#,.Net Framework 2.0, Windows SDK 6.0, 7.0, 7.1]
分類:[.NET]

Visual Studio 2005(C#)を使用して
アプリケーションを作成しています。

他言語対応するために、
文字列はdllから読み込むようになっています。

下記のコマンドをバッチファイルにして、
DLLファイルを作成していました。

resgen Home.MyApp.Properties.Resources.ko.resx
AL.exe /culture:ko /out:MyApp.resources.dll /embed:Home.MyApp.Properties.Resources.ko.resources

ユーザーがDLLファイルを作成できるように
フリーのWindows SDKで動作確認しました。
すると
6.0や7.0で作成したDLLは問題なく動作したのですが、
7.1で作成したDLLは読み込まれませんでした。
サイズを見ると
6.0や7.0で作成したDLLが40KBであるのに対し、
7.1で作成したDLLは27KBしかありませんでした。

作成されたresourcesファイルに違いはなかったので、
正常に動作しないのは
AL.exeのバージョンの差が原因のようです。

7.0のAL.exeは9.0.30729.1、
7.1のAL.exeは10.0.30319.1でした。

また、
7.1にも9.0.30729.1のAL.exeがv7.1\Binに含まれているのですが、
環境変数に記述されている順序が
10.0.30319.1のAL.exeが存在するパス(\7.1\Bin\NETFx 4.0 Tools)の方が先なので、
優先的に10.0.30319.1の方が読み込まれてしまうようです。

環境変数をいじれば改善するのですが、
ユーザーにいじらせたくありません。

AL.exeのバージョンによる動作の違いについて教えてください。
どちらのバージョンでも動作するDLLが生成されるような
バッチファイルが作れればよいのですが。。。

よろしくお願いいたします
(追記)
AL.exeと同じフォルダにある
AL.exe.Configを上書したところ、
正常に動作しました。

ユーザーにAL.exe.Configを上書きさせたくないので、
AL.exe実行時の引き数か何かで
AL.exe.Configの設定を代用できれば解決しそうです。

DOBON.NET | プログラミング道 | プログラミング掲示板