1

私は関数を構築しました:

 string removeFile(HttpContext context,HttpRequest r)
 {       
       dynamic d = new ExpandoObject() ;
       d.ItemCommand = r["itemId"].ToString();
       ...
       ...
       int res = new PolicyDal().Admin_Kits_AttachFile(d); //sending here the d.

他のクラス/ファイル:

   public int Admin_Kits_AttachFile(dynamic d)
   {
        DbCommand command = _webERPDB.GetStoredProcCommand("Admin_Kits_AttachFile");
        _webERPDB.AddInParameter(command, "@ItemCommand", DbType.String, d.ItemCommand);

次のエラーが発生します。

動的式のコンパイルに必要な 1 つ以上の型が見つかりません。Microsoft.CSharp.dll および System.Core.dll への参照が不足していますか?

通常の追加参照メニューになかったので、FILE SYSTEMでDLLを見つけた後に参照しました。

何故ですか ?なぜコンパイルしないのですか?なぜ彼らは通常の追加参照メニューにdllを入れなかったのですか? (ファイルシステムでdllを見つける必要がありました...)

4

2 に答える 2

4

このアセンブリには DLR が含まれています。アプリケーションで動的ディスパッチを使用する必要がある場合は、それを参照する必要があります。VS 2010 で新しいアプリケーション (コンソール、WinForms、ASP.NET、クラス ライブラリ) を起動すると、既定で参照として追加されます。

なぜ彼らは通常の追加参照メニューにdllを入れなかったのですか?

実際、彼らは次のようにしました。

ここに画像の説明を入力

于 2011-12-11T09:50:33.300 に答える
3

このエラーは、動的オブジェクトに関する何らかの機能を使用すると常に発生します。コンパイラは、Microsoft.CSharp.dll と System.Core.dll が見つからないというエラーをスローします。

ここに画像の説明を入力

この問題の原因は、すべての動的オブジェクトが、次の画像のように実行時に動的に生成されるクラスである必要があることです。

ここに画像の説明を入力

この問題を解決するには、「Microsoft.CSharp.dll」への参照を追加して、ランタイムが下の画像のような動的オブジェクトを動的にコンパイルできるようにします。

ここに画像の説明を入力

于 2011-12-11T10:05:09.860 に答える