问题
在访问特定页面时出现错误(在本地调试中):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
其他所有页面都很好 - 仅在访问特定页面时才会出现此问题。参考在所有其他页面上工作正常。据我所能确定,这不是参考的问题。
我花了很多时间研究这个问题。
我找到的所有答案都建议去web.config文件中,在system.web > configuration > assemblies中放置一个关于linq的程序集引用。但我的web.config文件中没有列出程序集,我怀疑这只适用于旧版本。无论如何,我还是试了一下。它给了我另一个错误,说它不知道该怎么处理程序集。
我删除了system.data.linq并重新添加了它。
我重新启动了VS和我的计算机。
我的代码 - 默认由VS生成的代码中有System.Linq。
背景 - 这是如何开始的:
该应用程序使用MVC 4和C#编写。
我在我的DataContext中创建了一个新类,添加了一个新控制器,并创建了一个强类型视图。
以下是一些非常相似的代码(可能不需要,但以防万一)。
两个类:
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());
}
没有什么花哨的东西。
这个页面是一个典型的 Razor 视图,强类型为 "List"。它有一个表格,迭代创建,并在进行数据转储。
如有需要,我很乐意提供任何额外的代码。
我没有修改 web.config。我没有删除或调整页面上的任何引用。所有其他视图都非常出色。
当我在本地运行时,尝试访问 /granny,就会出现上述错误。
感谢您的帮助!
解决方案:我进入了引用,并针对 System.Linq(或对于旧版本,我想是System.Data.Linq)将 CopyLocal 更改为 True。