問題
特定のページに移動するときのエラー(ローカルデバッグ内):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に変更しました。