shu*_*ath 8 c# linq web-config .net-assembly asp.net-mvc-4
问题
转到特定页面时出错(在本地调试中):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> configuration> assemblies中为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();
}
Run Code Online (Sandbox Code Playgroud)
这是控制器:
public ActionResult granny() {
return View(db.getGranny());
}
Run Code Online (Sandbox Code Playgroud)
没有什么花哨的.
该页面是一个典型的剃刀视图,强类型"列表"...它有一个表,它迭代创建,随时转储数据.
我很乐意根据需要提供任何其他代码.
我没有搞乱web.config.我没有删除或调整页面上的任何引用.所有其他观点都非常有效.
当我在本地运行它,并尝试去/ granny我得到上述错误.
谢谢你的帮助!
解决方案:我进入了引用,对于System.Linq(或者对于旧版本,我认为是System.Data.Linq)并将CopyLocal更改为True.
Chr*_*oll 25
这对我有用:
在此之前,System.Data.Linq.dll没有被复制到bin目录中.(手动将其复制到bin目录中也解决了错误)
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>
Run Code Online (Sandbox Code Playgroud)
注意:程序集应添加在编译元素下.
你能分享你的视图,控制器和datacontext代码吗?
小智 7
尝试@using System.Data.Linq在问题视图的顶部
添加<add namespace="System.Data.Linq" />到Views文件夹中<pages>的web.config部分.