4

Windows 7 64 ビットの Visual Studio 2010 で MVC2 アプリケーションをコンパイルしています。ビルド後のイベント コマンドとして次を実行しています。

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 に参照を追加したりする必要があるという他の多くの投稿を読みましたが、役に立ちませんでした。

何か案は??

4

5 に答える 5

1

@Adrian - 私は今日この問題を抱えていて、すぐに修正しました.C#プロジェクトでJ#をコンパイルしようとしていました.奇妙なエラーです. しかし、問題は、.java ファイルをプロジェクト フォルダーにコピーしたところ、問題が発生したことでした。それを削除すると、すべてが再び正常にコンパイルされました。

于 2011-03-24T14:12:43.220 に答える
1

@Kyralessa:まったく同じエラーが発生していました。ウェブサイトを実行していたユーザーに管理者の役割を追加すると、問題は「修正」されましたが、あなたが言ったように、それは理想的な解決策ではありません。

そのため、IIS の設定をいじっていたところ、Web サイトの基本設定で「アプリケーション ユーザー (パススルー認証)」に切り替えたところ、問題はなくなりました。アプリケーション プールは引き続き同じ (管理者以外の) ユーザーの下で実行されるため、セキュリティ上の問題はありません。

于 2012-01-17T08:55:46.233 に答える
0

以下のパッケージのいずれかをインストールしてみてください。

32 ビット: http://www.microsoft.com/download/en/details.aspx?id=18084

64 ビット: http://www.microsoft.com/download/en/confirmation.aspx?id=15468

これにより、他のソリューションが機能しないときにエラーを回避できました。

于 2012-01-18T14:15:06.033 に答える
0

csproj の MvcBuildViews プロパティを true に設定すると、同じエラーが発生しました。多くの調査と試行錯誤の末、私たちのサイトの構造に .java ファイルが含まれていることが問題の原因であることがわかりました。これらの Java ファイルはソリューションの一部ではなく、単純にルーズ ファイルです。Aspnetcompiler タスクはプロジェクト ルートから実行されるため、web.config ファイルや *.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'">
于 2013-11-07T02:12:30.827 に答える