2009-09-06 10 views
4

ASPコンパイラを使用してNAntのASP .Netアプリケーションを、問題なく継続的に構築しています。NAntのASPコンパイラを使用してASP .Net MVCアプリケーションを構築する

しかし、ASP .NET MVCアプリケーションで全く同じプロセスを試すと、ビルドはNAntで失敗しますが、Visual Studioで正常にコンパイルされます。私はNAntの中で取得するエラーメッセージは次のとおりです。

[HttpParseException]:それは中ドットに問題があることが表示されますタイプをロードできませんでした「MyNamespace.Views.Home.Index」

ファイル名は間違っているかもしれません。

ご提案は大歓迎です。

答えて

2

aspnet_compileを使用する前に、MVCアプリケーションをプロジェクトとしてビルドする必要があります。 MVCプロジェクトで他のクラスライブラリプロジェクトを使用する場合は、コンパイルする必要があります。

aspnet_compileを実行した後、展開されたサイトの一部ではないさまざまなファイルを削除します。

このビルドファイルは、プロジェクトMvcApplicationの親ディレクトリにあります。問題は、これは私の地元のdevのPC上で実行されているされて

<project default="build"> 
    <property name="build.dir" value="${project::get-base-directory()}"/> 
    <property name="build.config" value="Release" /> 

    <target name="build"> 

     <exec program="${framework::get-framework-directory('net-3.5')}/msbuild.exe"> 
      <arg value="/property:Configuration=${build.config}" /> 
      <arg value="${build.dir}/MvcApplication/MvcApplication.csproj" /> 
     </exec> 

     <delete dir="${build.dir}/PrecompiledWeb" includeemptydirs="true" failonerror="false"/> 

     <exec program="${framework::get-framework-directory('net-2.0')}/aspnet_compiler.exe"> 
      <arg value="-v" /> 
      <arg value="/" /> 
      <arg value="-p" /> 
      <arg value="MvcApplication/" /> 
      <arg value="-f" /> 
      <arg value="PrecompiledWeb" /> 
     </exec> 

     <delete verbose="true" includeemptydirs="true" failonerror="false"> 
      <fileset basedir="${build.dir}/PrecompiledWeb"> 
       <include name="Controllers" /> 
       <include name="Properties" /> 
       <include name="obj/**" /> 
       <include name="obj" /> 
       <include name="*.csproj" /> 
       <include name="*.csproj.user" /> 
      </fileset> 
     </delete> 

    </target> 
</project> 
+0

ありがとうございます - これは素晴らしいです!上記のいくつかのパラメータが欠けていました。 –

0

私の最高の推測では、ASP.Net mvc dllがビルドサーバーにインストールされていないということです。 ASP.Net MVCは別のダウンロードです。

+0

...私は、文字通り、Visual Studioでプロジェクトをビルドして終了し、私のNAntのスクリプトを実行するコマンドウィンドウを開いて、それが失敗することができます... ! –

+1

OK。新しい推測: "ビジュアルスタジオプロンプト"ではなく "コマンドプロンプト"を開いています。違いはパスです。パスが不足しているので、dllを見つけることができません。 –

+0

いいえ、ビルドに必要なコマンドプロンプト環境変数を設定しています - 通常のASP .Net Webサイトやその他のコンポーネントファイルは正常にビルドされています... –

1

あなたの質問に対する答えは正確ではありませんが、あなたが達成したいことを解決する可能性のあるさまざまなタックです。

スタンドアロンは、コマンドラインからaspコンパイラが使いやすいとわかります。

NAntコマンドラインタスクを使用してdevenv.exeでビルドすることはできませんか。

運のベスト

、ビルドボックスにMVCビットをインストール

ダン

+0

面白いものがあります。私はそれを調べます。 –

+0

あなたが正しいです、aspnet_compiler.exeはVisual Studioコンパイラよりも厳しい方です! –

3

はこれを整理する必要があり - どちらかあなたのHome.IndexビューがSystem.Webのから下降知っているの.dllを欠いています.Mvc.ViewPageまたはコンパイラが使用するための適切なプロジェクトテンプレートがありません。

+0

いいえ、ビルドマシンでスクリプトを実行していません。ビルドマシンで実行する前にローカルで実行しています(プリチェックインテスト)。しかし、彼らはローカルのdevマシンで実行されないので、私はビルドマシンを壊すようにコードをミュートアウトする必要があります。 –

4

ビルドボックスにASP.NET MVCをインストールしないでください。サードパーティの参照を格納する場所からSystem.Web.MVC、System.Web.RoutingおよびSystem.Web.Abstractions DLLを参照する必要があります。私たちは通常、これらの3つのDLL(およびそれ以上)が格納されているすべての参照と、すべてのコードが存在する/ srcフォルダを持つ/ libフォルダを持っています。この方法でこれらのDLLを参照する場合、これらのDLLの環境に頼る必要はなくなりました。このblog postは、このアイデアをより詳細に説明しています。

<target name="CompileSite" depends="blah blah"> 
    <exec program="${framework::get-framework-directory('net-2.0')}\aspnet_compiler.exe" commandline="-p &quot;${SrcDir}\Website&quot; -v/-d &quot;${CompiledSiteOutputDir}&quot; -fixednames" workingdir="${BaseDir}" /> 
</target> 

ので、それは間違いなく可能です:最近、私たちは、このターゲットを使用してASP.NET MVCのWebアプリケーションを構築し、私が働いていたプロジェクトで

+1

これはまさに私がやっていることです - 私はIvyを使って、MVCサイトの依存関係をコードが参照するLibフォルダに解決しています。ビルドサーバーには、追加のMVCコンポーネントがインストールされていません。 –

1

。私たちの見解は、ProjectName.Views.News.Listなどと呼ばれました。

詳細を教えてください。コンパイラは、エラー(ファイル、行番号など)に遭遇する場所を教えていますか?

関連する問題