问题
转到特定页面时出错(在本地调试中):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 hidden
所有其他页面都运行良好 - 这只发生在特别是访问一个页面时。该参考适用于所有其他页面。据我所知,这不是参考的问题。
我花了很多时间研究这个问题。
我找到的所有答案都建议转到 web.config 并在 system.web > 配置 > 程序集中放置对 linq 的程序集引用。我的没有列出程序集,我怀疑这更适用于旧版本。反正我做到了。它给了我另一个错误,说它不知道如何处理程序集。
我删除了 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());
}
那里没什么好看的。
该页面是一个典型的剃须刀视图,强类型“列表”......它有一个表,它可以迭代创建,并在它运行时转储数据。
我很乐意根据需要提供任何其他代码。
我没有弄乱web.config。我没有删除或调整页面上的任何参考。所有其他观点都非常有效。
当我在本地运行它并尝试转到 /granny 时,出现上述错误。
谢谢你的帮助!
解决方案:我参考了 System.Linq(或者对于旧版本,我想是 System.Data.Linq)并将 CopyLocal 更改为 True。