私が取り組んでいる従来のASP.Net Web Formsアプリケーションにいくつかの変更を加えた後、アプリケーションのページにアクセスしようとするたびに次の例外が発生しました。コードビハインドクラスでジェネリックメソッドを使用すると、動的コンパイル例外が発生するのはなぜですか?
C:\ WINDOWS \ Microsoft.NET \ Frameworkの\ v4.0.30319 \ ASP.NETの一時ファイル\ MyApplicationを\ bdb24adf \ eb592999 \ App_Web_mypage.aspx.cdcab7d2.dc1wid-d.0.cs(148):エラーCS0012:タイプ 'MyDataModelClass'は、参照されていないアセンブリで定義されています。あなたは、アセンブリへの参照を追加する必要があります「MyDataModelAssemblyバージョン= 40.0.0.30を、カルチャニュートラル、PublicKeyToken = = 7ca3fb5049101832」
は、トラブルシューティングの時間後、私は最終的に私がベースに追加した方法に問題を絞り込みますアプリケーションのすべてのページが派生するページクラス。それをMyBasePageClass
と呼んでください。
protected T CreatePlaceholder<T>(T item) where T : MyDataModelClass, new()
{
return new T { TemporaryIdentifier = item.TemporaryIdentifier };
}
私がそのメソッドをコメントアウトすると、例外がなくなり、すべてが期待通りに機能します。 web.configファイルにアセンブリ参照を追加すると、この例外もなくなります。奇妙なことに、Copy Local = trueへの参照を変更すると、例外もなくなります。
MyDataModelClassがアプリケーションに組み込まれたのは初めてのことではありません。これは、ファイルのほぼすべてのコードの後ろの場所で使用されます。しかし何らかの理由で、型制約として使用することは.Netが処理できる以上のものです。
私はそれがジェネリックスの性質と関係があると想像することができますが、私はそれが何であるか分かりません。私はこれを試した最初の人にすることはできませんが、私はそれについての情報をどこにでも見つけることができません。 IISの設定方法と関係がありますか?
更新:
MyDataModelAssemblyが実際にGACにインストールされています。
グローバルアセンブリキャッシュには、次のアセンブリが含まれます:ここます。gacutil/lでの出力である MyDataModelAssemblyは、バージョン= 40.0.0.30、カルチャニュートラル、PublicKeyToken = = 7ca3fb5049101832、processorArchitecture = MSIL
なぜ投票が下りましたか? –
私は誰がこの質問に投票を続けているか知りたいです。質問の上下投票の全目的は、よく研究され、難しい質問が上に上がり、質の低い質問が下に落ちるようにすることです。誰もこの質問に対して良い答えを得ていないように思えるので、トップに上がる必要があります。 –