1. ホーム
  2. c#

[解決済み] 参照されていないアセンブリで型が定義されているのですが、原因を調べるにはどうしたらいいですか?

2023-02-13 12:30:38

質問

このエラーメッセージはよくあるもので、このエラーに関する質問はSOにたくさんありますが、今のところ解決策がないので、質問することにしました。同様の質問の多くと異なるのは、私はApp_Codeディレクトリを使用していることです。

エラーメッセージです。

CS0012: The type 'Project.Rights.OperationsProvider' is defined in an
assembly that is not referenced. You must add a reference to assembly
'Project.Rights, version=1.0.0.0, Culture=neutral, PublicKeyToken=null'.

ソースファイルです。

c:\inetpub\wwwroot\Test\Website\App_Code\Company\Project\BusinessLogic\Manager.cs

以下の提案 ここで はこちら C:\WindowsMicrosoft.NET/*.* 内の Project.Rights.dll のインスタンスをすべて削除しました。 によると この 該当の.csファイルのビルドアクションが"Compile"に設定されているか確認しました。そうです。 また、"Project.Rights.OperationsProvider" タイプを含む .cs ファイルが App_Code ディレクトリにデプロイされていることをダブル チェックしました。

何らかの理由で、アプリケーションは App_Code ディレクトリでその型を探しません。Project.Rights.dll のインスタンスをすべて削除したので (私が知っている限り)、エラー メッセージが言及しているのはどのアセンブリなのかわかりません。

どのように解決するのですか。

このエラーが発生したとき、何が起こっているかは必ずしも明らかではありませんが、エラーにあるように、参照が欠落しています。次のコードの行を例にとって考えてみましょう。

MyObjectType a = new MyObjectType("parameter");

これは十分に単純に見え、おそらく "MyObjectType" を正しく参照していることでしょう。しかし、"MyObjectType" コンストラクタのオーバーロードの 1 つが、参照されていない型を取るとします。たとえば、次のように定義されたオーバーロードがあります。

public MyObjectType(TypeFromOtherAssembly parameter) {
    // ... normal constructor code ...
}

このエラーが発生するのは、少なくとも1つのケースです。ですから、型を参照したが、その型で呼び出される関数で可能なプロパティやメソッドのパラメータのすべての型ではない、このタイプのパターンを探してみてください。

これで少なくとも正しい方向に進めるといいのですが!