문제
로컬 디버그에서 특정 페이지로 이동할 때 오류 : 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 숨김
다른 모든 페이지는 훌륭하게 작동합니다. 특히 한 페이지에만 액세스 할 때만 발생합니다. 다른 모든 페이지에서도 참조가 작동합니다. 내가 결정할 수있는 한, 이것은 참조에 문제가되지 않습니다.
나는이 문제를 연구하는데 많은 시간을 할애했다.
내가 찾은 모든 대답은 web.config로 이동하여 system.web> configuration> 어셈블리에서 linq에 어셈블리 참조를 배치하는 것이 좋습니다. Mine에는 어셈블리가 나열되어 있지 않으며 이전 버전에서는 더 많이 사용됩니다. 나는 그것을 어떻게해서든지했다. 그것은 나에게 조립품으로 무엇을해야하는지 전혀 모른다는 다른 오류를 보냈다.
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());
}
거기에 멋진 아무것도.
이 페이지는 전형적인 면도기 뷰이며, 강력하게 "List"로 입력됩니다 ... 테이블을 반복 작성하여 데이터를 그대로 덤프합니다.
필요에 따라 추가 코드를 제공해 드리게되어 기쁩니다.
나는 web.config를 망치지 않았다. 페이지의 참조를 제거하거나 조정하지 않았습니다. 다른 모든 견해는 놀랍게 작동합니다.
내가 로컬로 실행하고 / 할머니에게 가려고하면 위의 오류가 발생합니다.
당신의 도움을 주셔서 감사합니다!
해결책: 나는 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>
참고 : 어셈블리는 컴파일 요소 아래에 추가해야합니다.
보기, 컨트롤러 및 datacontext 코드를 공유 할 수 있습니까?
추가하려고 시도하십시오.@using System.Data.Linq
문제보기의 맨 위에<add namespace="System.Data.Linq" />
으로<pages>
당신의 web.config 섹션조회수폴더.