22

完全なエラーは次のとおりです。

タイプ 'System.Windows.Forms.Control' は、参照されていないアセンブリで定義されています。アセンブリ 'System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089' への参照を追加する必要があります。

そして、必要のないライブラリ プロジェクトの最初のクラスの最初のステートメント (Debug.Assert 行) を指していますSystem.Windows.Forms(またはそう思っていました)。私はそれを解決する方法を知っています:言及された参照を追加してください。しかし、どのライブラリがこのエラーを引き起こしているのか、またはコードのどの部分が WinForms ライブラリを使用してトリガーされているのかを調べるにはどうすればよいでしょうか?

通常、他のライブラリを参照するライブラリを追加できますが、これらの他のライブラリへの参照は、実際に使用するときにのみ追加する必要があります。


編集:代替ソリューション

この問題または同様の問題は、Microsoft のフレームワーク ツールのBinding Log Viewer Fuslogvw.exeを使用して解決することもできます。アプリケーションがバインドするアセンブリのすべての試行と成功が表示されます。

4

3 に答える 3

31

System.Windows.Forms 型を使用しておらず、コンパイラ エラーがコードの (有用な) 行を指していないため、これを引き起こしているコード行はないと思われます。

私が考えているのは、System.Windows.Forms.Control を返すか、パラメーターとして取るパブリックに表示されるメソッドまたはプロパティを持つライブラリを参照していることです。実際にそのメソッド/プロパティを呼び出すかどうかは関係ありません。公開されているという事実は、ライブラリが使用しているすべての型を独自のコードで解決できる必要があることを意味します。ライブラリが System.Windows.Forms のみを内部的に使用している場合、これは発生しません。

また、依存しているアセンブリの依存関係を調べるだけでは、容疑者のリストを絞り込むことができます。これは、System.Windows.Forms に内部的に依存しているアセンブリ (問題ありません) と、問題を引き起こすアセンブリが 1 つある可能性があるためです。 SWForms アセンブリからの型のパブリック パラメータ/戻り値を持ちます。

私の提案は、SWForms への参照なしで空のプロジェクトをセットアップしてから、依存関係を順番に追加し、それぞれの後にコンパイルを試みることです。

于 2009-11-13T12:09:04.657 に答える
3

同じエラーが発生しました。

問題は、内部で System.Windows.Forms を使用するプロジェクトへの参照を使用したことです。

解決策は、プロジェクトにも System.Windows.Forms への参照を追加することです。

于 2014-08-13T07:15:04.127 に答える
2

NDepend、Reflector、またはObject Browserなどを使用して、依存しているアセンブリの依存関係を確認します。

上記の情報を考えると、他の方法は考えられません。

于 2009-11-13T11:31:08.663 に答える