ラステイル Ver 4.0 を起動したときに以下のエラーメッセージが表示されて正常に起動されない。 .NET Framework 4 のランタイムをインストールしていない場合に発生します。 以下のサイトから .NET Framework 4 のランタイムをインストールしてください。 More than 1 year has passed since last update. posted at 2019-11-30 問題自分で .NET Framework のアプリケーションをビルドして実行すると動作するファイルを,友人のコンピュータに転送し実行したところ次のような例外が投げられ正常動作しなかった。
また,転送する際に含めたファイルを自身のコンピュータの別のディレクトリに展開し実行すると,次のような例外が投げられ正常動作しなかった。
原因.exe.config ファイルが実行ファイルと同じディレクトリに存在しない。 解決策.exe.config を実行ファイルと同じディレクトリに配置する。(アーカイブに含める。) Register as a new user and use Qiita more conveniently
What you can do with signing up 「Fusionログ」について。 .NETアプリの実行時にアセンブリのバインド情報をログ出しするツール。 CLRによるアセンブリのバインドが失敗するケース(GACやCodeBase、或はルートフォルダに対象のモジュールが存在しない時など)では、CLRからThrowされたTypeLoadExceptionの内容をログ出し出来ていれば、十分解析可能。
といった確認には使えるかも。 「HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Fusion」のキーに以下の要素を追加する。 名前 : 「ForceLog」 種類 : 「REG_DWORD」 値 : 「1」 名前 : 「LogPath」 種類 : 「REG_SZ」 ※文字列型 値 : 「C:\FusionLogs」 ※ログの出力先ディレクトリのパス 対象のアプリを実行するのみ。 CLRによるアセンブリのバインドのタイミングで「LogPath」に指定されたディレクトリにFusionログが出力される。ログの形式はHTML。 アセンブリバインドログビューア(Fuslogvw.exe)を利用するとアセンブリバインドの詳細を表示するとこができます。 今回利用するサンプルアプリ 表示される例外の情報よりMyLibraryが見つからなかったために発生した例外であることはわかりますが、システムはどこを探したのかがわかりません。以下fuslogvw.exeを利用して、この情報を確認する方法を記述します。 ちなみに、fuslogvw_Test1.exeのソースコードは以下です。 Main()でMyLibrary.dllに定義があるClass1を作成する単純なアプリです。 Main()のC#コード using MyLibrary; namespace fuslogvw_Test1 { class Program { static void Main(string[] args) { Class1 cl = new Class1(); } } } MyLibraryのC#コードは以下です。 namespace MyLibrary { public class Class1 { } } すなわち、fuslogvw_Test1.exeにはMyLibrary.dllが必要でありMyLibrary.dllがないとSystem.IO.FileNotFoundExceptionが発生します。 Fuslogvw.exeのインストール 2. Windows SDKのインストール Windows SDKをインストールすると、スタートメニューに"Fusion Log Viewer"という項目ができます。 Fuslogvw.exe実行例 2. "設定"をクリックし、"バインドの失敗をディスクに記録する"を選択します。 3. MyLibrary.dllがない状態でサンプルアプリを実行し例外を発生させます。 4. "最新の情報に更新"をクリックします。 5. ログが表示されます。 6. 表示されたログをダブルクリックします。 以下のようなログが現れます。 上記のようにシステムが探そうとしたファイル名、探したパスが表示されます。 今回の場合は、上記の場所にMyLibrary.dllがなかったため例外が発生したことがわかります。 リンク
|