2011-09-19 9 views
0

Iはwinexeを構築するため、以下のNANT CSC標的を有する:NANT CSCビルドの失敗:参照が欠落していますか?

<csc target="winexe" output="${Deploy.dir}\VMIS.exe" debug="${debug}"> 
    <sources> 
    <include name="${App.dir}\**\*.cs" /> 
    <include name="${Build.dir}\AssemblyInfo.cs" /> 
    <exclude name="${App.dir}\**\AssemblyInfo.cs" /> 
    </sources> 
    <references refid="Lib.fileset"> 
    </references> 
    ... 
</csc> 

以下が障害メッセージである:myClass.csで

D:\..\myClass.cs(9,17): error CS0234: The type or namespace name 'Reporting' 
    does not exist in the namespace 'Microsoft' (are you missing an assembly 
    reference?) 

、私はこの基準を使用した:

using Microsoft.ReportViewer.WinForms; 

私のアプリをVSでビルドするのに問題はありませんが、NANTからビルドできませんでした。私はNANTビルドでMicrosoft.ReportViewer.WinForms.dllへの参照を見逃すかもしれないと思います。このDLLをNANTのbinにどのように含めることができるのかよく分かりませんか?

私は、CSCターゲットの参照を変更しようとしています

<csc ...> 
    ... 
    <references refid="Lib.fileset"> 
    <include name="Microsoft.ReportViewer.Common.dll" /> 
    <include name="Microsoft.ReportViewer.WinForms.dll" /> 
    </references> 
    ... 
</csc> 

はまだ機能していません。 binからすべてのdllファイルを$(build.dir)にコピーするのにCOPYターゲットを使うべきですか?

更新:プロジェクト参照のMicrosoft.ReportViewer.xx.dllファイルがローカルにコピーされていないことがわかりました。どのように2つのdllファイルのNANTのコピーをローカルにシミュレートできますか?私は、NANTはコンソールのビルドアプリであり、グローバルキャッシュ内の参照についての知識を持っていないので、この問題を解決するかもしれないと思います。

答えて

3

推奨:

  • は、あなたのアプリケーションを構築するためにあなたのNAntスクリプト(複数可)でのMSBuildを使用してください。

    FYI:Visual Studioは、MSBuildを使用してソリューションとプロジェクトをコンパイルおよび構築します。

    <!-- Verify the right target framework --> 
    <property name="MSBuildPath" value="C:\WINDOWS\Microsoft.NET\Framework\v3.5\MSBuild.exe" />  
    <target name="Build"> 
        <exec program="${MSBuildPath}"> 
         <arg line='"${SolutionFile}"' /> 
         <arg value="/target:Rebuild" /> 
         <arg value="/verbosity:normal" /> 
         <arg value="/nologo" /> 
        </exec> 
    </target> 
    

可能性:

  • コピーの参照/ファイルは、ローカルに(すなわちコピータスクを使用して)。または、同様にインクルード名に完全パスを使用します。

推奨しない:

  • 利用のNAntの "ソリューション" タスク、またはNAntContribの "MSBuildの" タスクを。

    これはmsbuild呼び出しを簡略化しますが、古いバージョンのmsbuild/VS solution/projectファイルに結びつけます。新しいVSソリューション/プロジェクトファイルはすぐにはサポートされません。

希望します。

+0

アセンブリ情報ファイルはどうですか?共有されている – dekdev

4

NAntは、.NETフレームワークのデフォルトのDLLセットで構成され、これらのDLLがどこに存在するかを認識します(例:C:\ Windows \ Microsoft.NET \ Framework64 \ v4.0.30319)。あなたは非Frameworkアセンブリが含まれている場合、彼らはあなたまたはサードパーティであるかどうか、あなたはそれらを含むが、DLLの完全なパスを使用することができます。

<include name="C:\Common\ThirdParty.dll" /> 

また、変数を使用することができます

<property name="common.directory" value="C:\Common" /> 
... 
<csc ...> 
    ... 
    <references> 
     <inclde name="${common.directory}\ThirdParty.dll" /> 
    </references> 
</csc> 
関連する問題