aspnet_compiler ищет поставщика кода jsharp в приложении C # mvc2 - PullRequest
4 голосов
/ 14 февраля 2011

Я компилирую приложение MVC2 в Visual Studio 2010 в 64-разрядной версии Windows 7. В качестве команды события после сборки я запускаю следующее:

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, но это не помогло.

Самое смешное, что я запустил это в совершенно новом решении MVC2 и получил ту же ошибку! Так что это не имеет никакого отношения к моему заявлению.

Чего мне не хватает, что вызывает эту ошибку?

Я читал много других сообщений, в которых говорится, что вам нужно установить распространяемый файл, добавить ссылку в web.config и т. Д., Но они не помогли.

Есть идеи ??

Ответы [ 5 ]

3 голосов
/ 11 мая 2011

У меня было такое сегодня, и я нашел какое-то решение.

Я использую VS 2010 и сайт ASP.NET MVC 3, использующий Razor, работающий в IIS (не IIS Express или Cassini).

В моем случае эта ошибка возникла в моих представлениях .cshtml. Для любого вида, который я открыл, первая строка @using была подчеркнута с ошибкой:

C: \ PathToMyCode \ PathToMyViews \ Index.cshtml: ошибка времени выполнения ASP.NET: не удалось загрузить файл или сборку 'VJSharpCodeProvider, версия = 4.0.0.0, культура = нейтральная, PublicKeyToken = b03f5f7f11d50a3a' или одна из ее зависимостей. Произошла ошибка, связанная с безопасностью. (Исключение из HRESULT: 0x8013150A)

Были также странные ошибки на всей странице, такие как неоднозначные ссылки между двумя сборками с одинаковым именем (например, предположительно конфликт между "System.Web.Helpers" и "System.Web.Helpers").

Причина: Я управлял веб-сайтом под учетной записью пользователя, у которой не было достаточных разрешений. У этой учетной записи была роль IIS_IUSRS, но, очевидно, есть какая-то другая роль или доступ, который необходим для этого. работать, или ему может потребоваться доступ к определенной папке, к которой он не может добраться.

К сожалению, я не знаю, что это такое, и меня не волнует идея тратить часы, чтобы понять это, после того, как я потратил слишком много времени, пытаясь выяснить, как это произошло в первую очередь.

Но , предоставив этому пользователю роль Администраторы, устранил ошибку .

Я понимаю, что это не идеальное решение, но я надеюсь, что, по крайней мере, некоторые люди отклеятся. Если кто-то точно определит, какие разрешения необходимы для предотвращения этой ошибки, прокомментируйте ниже, и, возможно, мы сможем сузить его.

1 голос
/ 17 января 2012

@ Киралесса: У меня была точная та же ошибка. Добавление роли «Администраторы» к пользователю, под которым сайт работал, «устранило» проблему, но, как вы сказали, это не идеальное решение.

Так что я возился с настройками IIS и в разделе «Основные настройки» веб-сайта переключился на «Пользователь приложения (сквозная аутентификация)», и проблема исчезла. Пул приложений по-прежнему работает под тем же пользователем (без прав администратора), поэтому проблем с безопасностью нет.

1 голос
/ 24 марта 2011

@ Адриан - у меня была эта проблема сегодня, и я почти сразу исправил ее, пытался скомпилировать J # в C # проекте, странная ошибка.Но проблема была в том, что я скопировал файл .java в папку своего проекта, и проблема возникла.Как только я удалил это, все снова скомпилировалось нормально.

0 голосов
/ 07 ноября 2013

У меня была такая же ошибка, когда я установил для свойства MvcBuildViews в csproj значение true. После долгих исследований и проб / ошибок я узнал, что проблема была в том, что на нашем сайте были файлы .java в структуре сайта. Эти файлы Java не были частью решения, просто потеряли файлы. Задача Aspnetcompiler запускается из корня проекта, поэтому она находит все виды проблем, таких как дубликаты файлов web.configs и * .java.

Чтобы справиться с этим, я создал следующую цель в файле проекта MVC, который я пытался отладить:

<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>

Надеюсь, это спасет кого-то за 3 часа, которые понадобились мне, чтобы выяснить ...

Обновление: Поскольку это добавляет больше времени к сборке, вы можете добавить условие в верхнюю часть, чтобы выполнять эту проверку только во время сборок стиля выпуска:

<Target Name="MvcBuildViews" AfterTargets="Build" Condition="'$(MvcBuildViews)'=='true' AND '$(Configuration)' == 'Release'">
0 голосов
/ 18 января 2012

Попробуйте установить один из следующих пакетов:

32-разрядный: http://www.microsoft.com/download/en/details.aspx?id=18084

64-разрядный: http://www.microsoft.com/download/en/confirmation.aspx?id=15468

Это привело меня к ошибке, когдани одно из других решений не будет работать.

...