問題
(ローカルデバッグで)特定のページに移動するときのエラー:CS0012:タイプ 'System.Data.Linq.DataContext'が参照されていないアセンブリで定義されています。アセンブリ 'System.Data.Linq、Version = 4.0.0.0、Culture = neutral、PublicKeyToken = b77a5c561934e089'への参照を追加する必要があります。
エラーメッセージで参照されているコード行は次のとおりです。
28行目:
29行目:
行30:パブリッククラス_Page_Views_blah_granny_cshtml:System.Web.Mvc.WebViewPage {
31行目:
32行目:#lineを隠しました
他のすべてのページはうまく機能します - これは特に1つのページにアクセスするときにだけ起こります。参照は他のすべてのページに取り組んでいます。私が判断できる限り、これは参照に関する問題ではありません。
私はこの問題の調査にかなりの時間を費やしました。
私が見つけたすべての答えはweb.configに行き、system.web> configuration> assemblyにlinqへのアセンブリ参照を置くことを提案しました。私のものにはリストされたアセンブリがありません、そして、私はこれがより古いバージョンのためにもっとあると思う。とにかくやった。アセンブリの処理方法がわからないという別のエラーが表示されました。
system.data.linqを削除して、もう一度追加しました。
VSとコンピュータの両方を再起動しました。
私のコードは、VSによってデフォルトで生成されたもので、System.Linqを持っています。
背景 - これはこれがどのように始まったかです:
アプリケーションはMVC 4、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に変更しました。
これは私のために働いた:
これ以前は、System.Data.Linq.dllはbinディレクトリにコピーされていませんでした。 (手動でbinディレクトリにコピーしてもエラーは解決しました)
System.Data.Linq.dll
参照されている場合は、いつでも利用できますか。 - Protector one
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>
注:アセンブリはcompilation要素の下に追加する必要があります。
ビュー、コントローラ、データコンテキストのコードを共有できますか?
追加してみてください@using System.Data.Linq
問題ビューの上部に<add namespace="System.Data.Linq" />
に<pages>
あなたのweb.configのセクションビューフォルダ。