【发布时间】:2013-03-25 17:49:00
【问题描述】:
问题
转到特定页面时出错(在本地调试中):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 隐藏
所有其他页面都运行良好 - 仅在访问一个页面时才会发生这种情况。该参考适用于所有其他页面。据我所知,这不是参考的问题。
我花了很多时间研究这个问题。
我找到的所有答案都建议转到 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());
}
没什么特别的。
该页面是典型的 razor 视图,强类型“列表”...它有一个表,它可以迭代创建,并在执行过程中转储数据。
我很乐意根据需要提供任何其他代码。
我没有弄乱 web.config。我没有删除或调整页面上的任何参考。所有其他观点都非常有效。
当我在本地运行它并尝试转到 /granny 时,出现上述错误。
感谢您的帮助!
解决方案:我查看了参考资料,并针对 System.Linq(或者对于旧版本,我想是 System.Data.Linq)并将 CopyLocal 更改为 True。
【问题讨论】:
-
忘记配置文件中的程序集,您的项目不只是有一组“正常”的引用吗? (在解决方案资源管理器中,是否有参考项?)
-
当然有。它引用 System.Data.Linq。我删除了引用并添加了它,以为那里挂了一些东西。我正在使用包含的 .NET System.Data.Linq。它应该指向 C:\Program Files\Reference Assemblies\Microsoft\Framework\.NETFramework\v4.0\System.Data.Linq.dll。值得注意的是,我的其他页面使用 linq 就好了。我不认为这是一个 linq 参考问题,因为它不是一个群居的问题——它只是这一页。
-
你能提供一个完整的解决方案或项目来演示这个问题吗?
-
整个解决方案?或者是否有您感兴趣的特定文件或属性?
-
@shubniggurath 一个完整的解决方案。不必说是您的解决方案。只是一个证明问题的地方。
标签: c# linq asp.net-mvc-4 web-config .net-assembly