12

問題

特定のページに移動するときのエラー(ローカルデバッグ内):CS0012:タイプ'System.Data.Linq.DataContext'が、参照されていないアセンブリで定義されています。アセンブリ'System.Data.Linq、Version = 4.0.0.0、Culture = neutral、PublicKeyToken=b77a5c561934e089'への参照を追加する必要があります。

エラーメッセージで参照されているコード行は次のとおりです。

28行目:
29
行目:30行目:public class _Page_Views_blah_granny_cshtml:System.Web.Mvc.WebViewPage {
31行目:
32行目:#line hidden

他のすべてのページはうまく機能します-これは、特に1つのページにアクセスするときにのみ発生します。参照は他のすべてのページで機能しています。私が判断できる限り、これは参照の問題ではありません。

私はこの問題の調査にかなりの時間を費やしました。

私が見つけたすべての答えは、web.configに移動し、linqへのアセンブリ参照をsystem.web>configuration>assemblyに配置することを提案しました。鉱山にはアセンブリがリストされていません。これは古いバージョンの方が多いと思います。とにかくやりました。アセンブリをどうするかわからないという別のエラーが発生しました。

system.data.linqを削除して、再度追加しました。

VSとコンピューターの両方を再起動しました。

私のコード(VSによってデフォルトで生成される)にはSystem.Linqがあります。

背景-これがどのように始まったかです:

アプリケーションはMVC4、C#です。

DataContextに新しいクラスを作成し、新しいコントローラーを追加して、強く型付けされたビューを作成しました。

これは非常によく似たコードです(おそらく必要ありませんが、念のため)。

2つのクラス:

public class granny { 
            public string data { get; set; }
            public string criteria { get; set; }
}

public List<granny> getGranny() {
    var a = from x in grannytable
            join dx in anothertable
            on x.criteria equals dx.criteria
            select new granny {
                data = x.somenewdata;
            }; 
    return a.ToList();
}

コントローラは次のとおりです。

    public ActionResult granny() {
        return View(db.getGranny());
    }

そこには何も派手なものはありません。

このページは典型的なかみそりのビューで、強く入力された「リスト」です...作成を繰り返すテーブルがあり、データをダンプします。

必要に応じて、追加のコードを提供させていただきます。

私はweb.configをいじっていません。ページ上の参照を削除または微調整していません。他のすべてのビューは見事に機能します。

ローカルで実行して/grannyに移動しようとすると、上記のエラーが発生します。

ご協力いただきありがとうございます!

解決策:参照を調べ、System.Linq(または古いバージョンの場合はSystem.Data.Linq)の場合は、CopyLocalをTrueに変更しました。

4

3 に答える 3

29

これは私のために働いた:

  • Webプロジェクトの参照ノードに移動します
  • System.Data.Linqへの参照を検索します
  • VSプロパティウィンドウを開きます
  • プロパティウィンドウで、[ローカルコピー:False]を[True]に変更します

これまで、System.Data.Linq.dllはbinディレクトリにコピーされていませんでした。(手動でbinディレクトリにコピーすることでもエラーは解決しました)

于 2015-12-18T13:34:22.810 に答える
9

@using System.Data.Linq問題のあるビューの上部で 、 Viewsフォルダーのweb.configのセクションに追加してみて<add namespace="System.Data.Linq" />ください。<pages>

于 2013-04-03T07:47:38.840 に答える
9

MVCはその場でビューをコンパイルできません。ビューにDataContextへの参照が含まれているようです。web.configに参照を追加すると、コンパイラにファイルを探すように指示する必要があります。

<configuration> 
 <system.web>
  <compilation targetFramework="4.0"> 
    <assemblies> 
      <add assembly="System.Data.Linq, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089"/> 
   </assemblies> 
</compilation>

注:アセンブリは、コンパイル要素の下に追加する必要があります。

ビュー、コントローラー、データコンテキストコードを共有できますか?

于 2013-04-03T19:56:37.833 に答える