
作成したC#プログラムをコマンドプロンプト上でコンパイルし、実行すると下記のエラーが発生し、途方に呉れております。どうか原因と対策を教えてください。
エラー内容「例外発生(Main)ファイルまたはアセンブリ 'MyClassLibrary1, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null'、またはその依存関係の 1 つが読み込めませんでした。指定されたファイルが見つかりません。
場所 test09.test09.WinForm..ctor() 場所 test09.test09.Main()」
このC#プログラムは、まずクラスライブラリ(MyClassLibrary1)をVisualStudio上で作成し、次にそのテスターを同じくVisualStudio上で作成し動作確認をした後、そのテスターをコピーして新しいプログラムとして、今度はコマンドプロンプト上でコンパイルしたものです。この時の参照設定は「/r:Microsoft.VisualBasic.dll,MyClassLibrary1.dll /lib:C:\WINDOWS\Microsoft.NET\Framework\v2.0.50727,C:\MyClassLibrary1\MyClassLibrary1\bin\Release」としました。コンパイルエラーは一切ありません。
何故VisualStudio上でうまく動作するものを、コマンドプロンプト上でやり直すのかには、それなりの理由があるのですが説明は文字数制限で省略いたします。必要とされている事とご理解ください。
A 回答 (3件)
- 最新から表示
- 回答順に表示
No.3
- 回答日時:
大前提ですが,アプリケーション構成ファイルを利用する方法は避けられるなら避けることをお勧めします。
扱いが非常に面倒です。
# 厳密名付きのアセンブリであれば面倒であっても意味があるので,避けない,という選択肢が存在しますが。
今回の場合は厳密名が付いていないので,アセンブリをおける場所が非常に限られます。
まず,おける場所は.exeと同じディレクトリか,その配下ディレクトリになります (仮に,LibraryDirとします)。
次に,アプリケーション構成ファイル (*.exe.config) に,以下の記述のどちらかを追加します (既存の場合はマージすること)。
a.) dependencyAssembly要素を利用
<configuration>
<runtime>
<assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1">
<dependentAssembly>
<assemblyIdentity name="MyClassLibrary1" />
<codeBase href="LibraryDir/MyClassLibrary1.dll" />
</dependentAssembly>
</assemblyBinding>
</runtime>
</configuration>
b.) probing要素を利用
<configuration>
<runtime>
<assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1">
<probing privatePath="LibraryDir" />
</dependentAssembly>
</assemblyBinding>
</runtime>
</configuration>
これによって,前者ではMyClassLibrary1を探す場所が変化し,
後者ではすべてのアセンブリについて,.exeと同じディレクトリ以外の場所も探すようになります。
どちらの方法も,.exeと同じディレクトリ以下のみを探せることに注意してください。
なお,ライブラリに厳密名を付けていれば,a.の方法を使うことで,どこにでも置くことができます。
<configuration>
<runtime>
<assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1">
<dependentAssembly>
<assemblyIdentity name="MyClassLibrary1" culture="neutral" publicKeyToken="a1238fd2b18ca30e" />
<codeBase version="1.0.0.0" href="file://localhost/C:/MyClassLibrary1/MyClassLibrary1/bin/Release/MyClassLibrary1.dll" />
</dependentAssembly>
</assemblyBinding>
</runtime>
</configuration>
MSDN: 厳密な名前付きアセンブリ
http://msdn.microsoft.com/ja-jp/library/wd40t7ad …
MSDN: 方法 : アセンブリに署名する (Visual Studio)
http://msdn.microsoft.com/ja-jp/library/ms247123 …
度々面倒なことをお願いしたにも関らず、辛抱強くご丁寧な回答を頂きまして、心底、感謝いたしております。お陰様で見通しが付き気持ちがすっかり前向きになることができました。本当にありがとうございました。
お教え頂いた手続きをすぐに応用するには、私には難しすぎて時間が掛かりそうなので、今回頂いた回答を理解するための勉強を続けるすることにして、当面は先に頂いたコピー方法で進めて参りたいと考えております。そして理解が進みましてから再度、今回教えていただいた手法を応用して完成させる所存です。その節は又お世話になるかも知れませんが、どうかよろしくお願い申し上げます。ありがとうございました。
No.2
- 回答日時:
/libはコンパイルにアセンブリを検索する場所を指定するものであって,実行時には全く別の方法でアセンブリが検索されます。
アプリケーション構成ファイル (app.config) まわりの話がわからないのであれば,とりあえず,
「.NET Frameworkに標準で含まれない全ての.dllは.exeと同じディレクトリにおく」
と思ってください。
一般的にはこの認識で十分です。
結論としては,MyClassLibrary1.dllと実行アセンブリを同一ディレクトリにおくようにしてください。
これで実行できるようになるはずです。
この回答への補足
質問者の私の無知にも関らず、優しく即答を頂くことができ、まことにありがたく感謝いたしております。
お教え頂きました「取敢えず対策」(MyClassLibrary1.dllを実行アセンブリと同一ディレクトリにコピーする方法)で、実行してみました。結果は上々で、目的プログラムが問題なく起動し、意図通りに動作することが確認できました。ありがとうございました。
ところで直接参照できる方法は難しいのでしょうか? 出来れば直接参照で実施してみたいと願っているのですが私には無理でしょうか?
もしそうでなければ、お忙しいのに無理な注文ばかり申し上げて申し訳ありませんが、コマンドシンタックスを教えて頂けないでしょうか?
No.1
- 回答日時:
アセンブリの検索位置に,MyClassLibrary1.dllは存在しますか。
MSDN: ランタイムがアセンブリを検索する方法
http://msdn.microsoft.com/ja-jp/library/yx7xezcf …
Visual Studioは参照設定されていて,ローカルコピーがTrueのアセンブリをアセンブリをビルドした先へコピーしますが,
コマンドラインからビルドした場合はそれはおこなわれません。
このため,アプリケーション構成ファイルのdependencyAssemblyやprobingが適切に設定されていない場合,システムはアセンブリを見つけることができません。
この回答への補足
早速のご回答を頂きまして誠にありがとうございます。
確かにMyClassLibrary1.dllは「/r:以下」で指定した場所に存在しております。ご指摘を頂きました「コマンドラインからビルド時に必要なアプリケーション構成ファイルのdependencyAssemblyやprobingが適切に設定されていない場合」については、私には初めてお聞きすることであり、具体的にどのように設定すれば良いのか判らず途方にくれております。お忙しいところ誠に申し訳ありませんが、その方法を教えて頂けないでしょうか?
更に申し訳ないのですが、添付頂きましたURLにアクセスして読んでみましても、良く理解できないでおります。どうかよろしくお願いいたします。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- その他(プログラミング・Web制作) ラズパイ上の、pythonのエラーについて 1 2023/04/12 23:27
- C言語・C++・C# PC画面を録画するプログラムでdllの読み込みエラー 1 2023/04/22 08:31
- Visual Basic(VBA) フレームワーク「4.8.1」で、[Sub Main]が動かない。助けて下さい 3 2022/11/14 15:40
- Perl Perl の外部モジュールの利用方法 3 2022/07/10 18:34
- C言語・C++・C# Windows Formアプリからコンソールを呼び出して文字を出力させたい 8 2023/05/09 10:53
- C言語・C++・C# ExcelCS 1 2023/01/27 19:47
- 英語 「this is the/my first time~」の文法上の制約について 1 2023/04/06 09:48
- Visual Basic(VBA) VBA リボンののリカバリーでオーバーフローエラーになります 2 2023/07/04 19:07
- Java java final 1 2022/06/10 22:49
- Windows 10 Windows Updateが動作しません 7 2022/08/12 16:26
このQ&Aを見た人はこんなQ&Aも見ています
-
「タイプ初期化子が例外をスローしました」エラー何?
Visual Basic(VBA)
-
DLL参照時に指定されたモジュールが見つかりません。(HRESULT からの例外 0x8007007E) が発生してしまう。
C言語・C++・C#
-
exeファイルの中身を見ることは可能ですか?
フリーソフト
-
-
4
.NETアプリを作ったときの .manifest ファイルって必要なの
C言語・C++・C#
-
5
CloseとDisposeの違い
Visual Basic(VBA)
-
6
visual studio でインデントを自動的に揃えるショートカットキー
その他(プログラミング・Web制作)
-
7
visual studio2019でデバッグができません
Visual Basic(VBA)
-
8
コマンドプロンプトのエラーについて
その他(パソコン・周辺機器)
-
9
ORA-01013のエラーについて経験のある方お願いします。
Oracle
-
10
「指定されたキャストは有効ではありません。」とエラーが出てしまいます。
Microsoft ASP
-
11
SPREAD(GrapeCity)のセルにフォーカスを設定するにはどうしたらいいのでしょうか?
Visual Basic(VBA)
-
12
C#ソースをCSCファイルにてコンパイル時,アセンブリ参照不足について 当方,C#を勉強中のものです
C言語・C++・C#
-
13
VB.NET Oracle接続 32、64bit
Oracle
-
14
Loadイベント中にほかのイベントを発生したくない
その他(プログラミング・Web制作)
-
15
Visual Studio 「AnyCpu」について
C言語・C++・C#
-
16
SQL文で パラメータが少なすぎます エラー
Access(アクセス)
-
17
VB.NETで DataRow()を利用して、値からコードを取得したい。
Visual Basic(VBA)
-
18
ActiveXコントロールを.NETにインポートできない???
C言語・C++・C#
-
19
CStringのFindで文字列検索を行いたいのですが
C言語・C++・C#
-
20
変数の参照でエラーが出てしまいます。(VB.NET)
Visual Basic(VBA)
関連するカテゴリからQ&Aを探す
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
意味不明の実行時エラーで困っ...
-
C#ソースをCSCファイルにてコン...
-
OWCを使用しブラウザにグラフを...
-
VB2010で作成したdllからtlbが...
-
ManagementClassが見つからない。
-
Using System.Drawing がうまく...
-
MS Visual Studio 6.0のEnterpr...
-
VB.NETでDLLを読み込ませる時に...
-
SOAP通信。恥を忍んで質問させ...
-
DLLを作成してVBAから使用する...
-
印刷ダイアログを表示させたくない
-
VBAでOutlookを終了させたい Ex...
-
印刷ダイアログを表示させない方法
-
Process.Startで起動したアプリ...
-
インストール不要アプリケーシ...
-
URLを指定して直接印刷って出来...
-
vba 時間の引き算 例えば 15:00...
-
CreateFile が ERROR_PATH_NOT_...
-
遺伝的アルゴリズムについて教...
-
「読み込み違反」が起きたとき...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
意味不明の実行時エラーで困っ...
-
ManagementClassが見つからない。
-
VB.NETでDLLを読み込ませる時に...
-
VB.NETで参照設定したDLLの修正...
-
VB.Net リビルド 意味不明なメ...
-
VB2010で作成したdllからtlbが...
-
C#ソースをCSCファイルにてコン...
-
オブジェクト(dll)のレジストリ...
-
IT初心者です 仕事で、vb.netで...
-
Using System.Drawing がうまく...
-
VB2008→VB2010でエラーが出てま...
-
VBAの参照設定について
-
DLLを作成してVBAから使用する...
-
ビルドが実行できない 先へ進...
-
MS Visual Studio 6.0のEnterpr...
-
Windows10のVBAでDirectX 8が使...
-
VB6.0で作成したプロジェクトの...
-
Excel-VBAでDSOFile.dll使える?
-
ActiveMovie Control Objectを...
-
EXCEL2000でVBAでWinsockをしたい
おすすめ情報