4

Windows 7 64 비트 Visual Studio 2010에서 MVC2 응용 프로그램을 컴파일하고 있습니다. 나는 빌드 후 이벤트 명령으로 다음 실행하고 있습니다 :aspnet_compiler C# mvc2 응용 프로그램에서 jsharp 코드 공급자를 찾고

그것은 다음과 같은 오류가 발생
aspnet_compiler.exe -v/-p \ 

: -

The CodeDom provider type "Microsoft.VJSharp.VJSharpCodeProvider, VJSharpCodeProvider, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" could not be located 

나는 내 솔루션에는 J 번호가 없습니다. J # 2.0 재배포 가능 패키지 Second Edition을 다운로드했지만 도움이되지 않았습니다.

재미있는 점은 BRAND NEW MVC2 솔루션에서 이것을 실행했고 동일한 오류가 발생했습니다! 그래서 내 응용 프로그램과 관련이 없습니다.

이 오류의 원인은 무엇입니까?

재배포 가능 파일을 설치하고 web.config 등에서 참조를 추가해야한다고 말한 다른 게시물을 읽었지만 도움이되지 않았습니다.

어떤 아이디어 ??

+1

이 블로그 게시물은 다음과 같은 도움을줍니다. http://blogs.telerik.com/manoldonev/posts/07-12-01/the_codedom_provider_type_microsoft_vjsharp_vjsharpcodeprovider_could_not_be_located.aspx –

답변

1

@Adrian - 오늘이 문제가 발생하여 거의 곧바로 수정되었습니다. C# 프로젝트에서 J #을 컴파일하려고했는데 이상한 오류가있었습니다. 하지만 문제는 .java 파일을 프로젝트 폴더에 복사하고 문제가 발생했습니다. 일단 내가 그것을 제거하면, 모두 다시 잘 컴파일됩니다.

+0

방금 ​​내 엉덩이를 저장했습니다. 감사합니다. –

3

나는 이것이 오늘 일어 났으며, 일종의 해결책을 발견했다.

IIS (IIS Express 또는 Cassini가 아닌)에서 실행되는 Razor를 사용하여 VS 2010과 ASP.NET MVC 3 사이트를 사용하고 있습니다.

제 경우에는이 오류가 내 .cshtml보기에서 잘립니다. 나는 열려있는 뷰를 들어, 첫 번째 @using 라인은 오류 강조했다 :

또한 같은 이름을 가진 두 개의 어셈블리 사이의 모호한 참조로 페이지에 걸쳐 기괴한 오류, (사이 예를 들어 가정으로 충돌이 있었다

C:\PathToMyCode\PathToMyViews\Index.cshtml: ASP.NET runtime error: Could not load file or assembly 'VJSharpCodeProvider, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a' or one of its dependencies. An error relating to security occurred. (Exception from HRESULT: 0x8013150A)

" System.Web.Helpers "및"System.Web.Helpers ").

원인 : 충분한 권한이없는 사용자 계정으로 웹 사이트를 실행하고있었습니다. 계정에는 IIS_IUSRS 역할이 있지만이 역할을하려면 다른 역할이나 액세스가 필요하거나 액세스 할 수없는 특정 폴더에 대한 액세스가 필요할 수 있습니다.

불행히도, 나는 그것이 무엇인지 알지 못합니다. 그리고 나는 이미 이런 일이 어떻게 일어 났는지 알아 내려고 너무 많은 시간을 소비 한 후에 그것을 알아낼 시간을 낭비한다는 생각에 흥분하지 않습니다. .

그러나 사용자에게 관리자 역할은 오류를 해결합니다.

나는 이것이 이상적인 해결책이 아니라는 것을 알고 있지만 적어도 사람들이 풀리게되기를 바랍니다. 이 오류를 방지하기 위해 필요한 사용 권한을 정확히 파악한 사용자는 아래에 의견을 제시하고 범위를 좁힐 수 있습니다.

+0

흥미 롭습니다. 나는이 문제에 대한 해결책을 찾지 못했고 새로운 프로젝트로 옮겨 졌으므로 기회를 얻지 못할 것이다. 다행히 일할 것이있어 다행입니다. – Thomas

+0

+1 - 나는 2 일 동안이 싸움을 해왔고, 응용 프로그램 풀 사용자를 '응용 프로그램 풀 ID'에서 '로컬 시스템'으로 변경하면 제거되었습니다. – arootbeer

+0

IIS 웹 사이트 구성의 ** 응용 프로그램 풀 ID **로 구성된 사용자를 ** Administrators ** 그룹에 추가하면 나를 위해 일했습니다. 이 그룹에 액세스하는 방법을 기억하지 못하므로 여기에 제어판, 사용자 계정, 사용자 계정 관리, 고급 탭, 고급, 그룹, 관리자 경로가 있습니다. – madprog

1

@Kyralessa : 정확히 같은 오류가 있습니다. 웹 사이트가 실행중인 사용자에게 관리자 역할을 추가하면 문제가 "해결"되지만 이상적인 해결책은 아닙니다.

IIS 설정으로 주변을 둘러 보면서 "응용 프로그램 사용자 (통과 인증)"로 전환 한 웹 사이트의 기본 설정에서 문제가 사라졌습니다. 앱 풀은 여전히 ​​(관리자가 아닌) 동일한 사용자로 실행되므로 보안 문제는 없습니다. 아래의 패키지 중 하나를 설치

0

csproj의 MvcBuildViews 속성을 true로 설정하면이 동일한 오류가 발생했습니다. 많은 연구와 시행 착오 끝에, 우리 사이트가 .java 파일을 사이트의 구조에 가지고 있기 때문에 문제가 발생한다는 것을 알게되었습니다. 이 자바 파일은 솔루션의 일부가 아니며 단순히 파일 만 남았습니다. Aspnetcompiler 작업은 프로젝트 루트에서 실행되므로 중복 된 web.configs 및 * .java 파일과 같은 모든 종류의 문제를 찾습니다. ...

이 누군가에게 그것은 나를 알아 내려고했다 3 시간 절약

<Target Name="MvcBuildViews" AfterTargets="Build" Condition="'$(MvcBuildViews)'=='true'"> 
    <!-- This task performs compilation of the CSHTML files in the web structure 
    and will generate compiler errors if there are issues in the views, such as missing 
    resource strings, broken class locations, etc. 
    Due to an issue with the AspNetCompiler task identifing .java files as candidates for 
    compilation, we will temporarily rename all of the java files in the project to .xyz 
    so they are skipped by aspnet compiler. Then we rename them back. 
    Extra web.configs also cause an error, so those are temporarily moved. --> 
    <CreateItem Include="$(ProjectDir)**\*.java"> 
     <Output TaskParameter="Include" ItemName="JavaFolderA"/> 
    </CreateItem> 
    <CreateItem Include="$(ProjectDir)obj\**\web.config"> 
     <Output TaskParameter="Include" ItemName="ExtraWebConfigsA"/> 
    </CreateItem>  
    <Move SourceFiles="@(JavaFolderA)" DestinationFiles="@(JavaFolderA->'$(ProjectDir)%(RecursiveDir)%(FileName).xyz')"/> 
    <Move SourceFiles="@(ExtraWebConfigsA)" DestinationFiles="@(ExtraWebConfigsA->'$(ProjectDir)%(RecursiveDir)%(FileName).ccc')"/> 

    <AspNetCompiler VirtualPath="temp" PhysicalPath="$(WebProjectOutputDir)" /> 

    <CreateItem Include="$(ProjectDir)**\*.xyz"> 
     <Output TaskParameter="Include" ItemName="JavaFolderB"/> 
    </CreateItem> 
    <CreateItem Include="$(ProjectDir)obj\**\web.ccc"> 
     <Output TaskParameter="Include" ItemName="ExtraWebConfigsB"/> 
    </CreateItem> 
    <Move SourceFiles="@(JavaFolderB)" DestinationFiles="@(JavaFolderB->'$(ProjectDir)%(RecursiveDir)%(FileName).java')"/> 
    <Move SourceFiles="@(ExtraWebConfigsB)" DestinationFiles="@(ExtraWebConfigsB->'$(ProjectDir)%(RecursiveDir)%(FileName).config')"/> 
</Target> 

희망이 다루는

, 나는 내가 디버그하려고했던 MVC 프로젝트 파일에 다음과 같은 목표를 만들어

업데이트 : 이 빌드에 더 많은 시간을 추가 않기 때문에, 당신은 단지 릴리스 스타일 동안이 검사를 수행하기 위해 상단에있는 상태로 추가 할 수 있습니다 빌드 : 어쩌면

<Target Name="MvcBuildViews" AfterTargets="Build" Condition="'$(MvcBuildViews)'=='true' AND '$(Configuration)' == 'Release'">