2011-09-19 3 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?) 

를 I이 사용 기준 가지고

using Microsoft.ReportViewer.WinForms; 

VS에서 내 앱을 빌드하는 데는 문제가 없지만 NANT에서 빌드 할 수는 없습니다. NANT 빌드에서 Microsoft.ReportViewer.WinForms.dll에 대한 참조를 놓칠 수도 있습니다. NANT의 bin에이 dll을 어떻게 포함시킬 수 있는지 잘 모르시겠습니까?

나는 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 파일이 로컬로 복사되지 않습니다. 어떻게 그 두 dll 파일에 대한 로컬 NANT에 복사를 시뮬레이션 할 수 있습니까? NANT는 콘솔에서 빌드 앱이며 글로벌 캐시의 참조에 대한 지식이 없으므로 문제가 해결 될 것 같습니다.

답변

3

권장 :

  • 사용은 MSBuild를 응용 프로그램을 구축하기은 NAnt 스크립트 (들).

    는 참고 : 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> 
    

가능성 : 로컬

  • 복사 참조/파일 (즉, 복사 작업을 사용하여). 또는 include 이름에 전체 경로를 사용합니다.

은 권장하지 않음 :

  • 사용은 NAnt의 "솔루션"작업 또는 NAntContrib의 "MSBuild에서"작업.

    은 msbuild를 호출을 단순화 것이지만 msbuild를/VS 솔루션/프로젝트 파일의 이전 버전으로 당신을 묶어 것입니다. 최신 VS 솔루션/프로젝트 파일은 쉽게 지원되지 않습니다.

희망이 있습니다.

+0

을 어셈블리 정보 파일은 어떻습니까? 공유되는 – dekdev

4

NAnt는 .NET 프레임 워크의 기본 DLL 집합으로 구성되며 해당 DLL이있는 위치를 알고 있습니다 (예 : C : \ Windows \ Microsoft.NET \ Framework64 \ v4.0.30319).이 아닌 프레임 워크 어셈블리를 포함하는 경우, 그들은 본인 또는 제 3 자입니다 여부, 당신은 그 (것)들을 포함하지만, DLL의 전체 경로 사용할 수 있습니다

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

또한 사용할 수있는 변수 :

<property name="common.directory" value="C:\Common" /> 
... 
<csc ...> 
    ... 
    <references> 
     <inclde name="${common.directory}\ThirdParty.dll" /> 
    </references> 
</csc> 
관련 문제