2015-12-02 53 views
0

在Delphi工程的編譯,以下錯誤是由編譯器給出:的Delphi XE - 致命:找不到F1027單位: 'System.pas' 或二進制等效(.dcu)

致命:F1027單位未找到: 'System.pas'或二進制等效(.dcu)

只有在使用TFS構建系統構建msbuild時纔會發生這種情況。

當通過命令行執行時可以正常工作,如下所示。

命令:C:\ WINDOWS \ Microsoft.NET \ Framework64 \ V2.0.50727 \ msbuild.exe E:\ SRC \項目\ sample.groupproj/V:M/T:編譯/ P:配置=釋放

通過的MSBuild以下執行失敗:

<Exec Command="C:\Windows\Microsoft.NET\Framework64\v2.0.50727\msbuild.exe E:\Src\Project\Sample.groupproj /v:m /t:Build /p:Config=Release"/>

注:以下ENV變量被設置:BDS,BDSLIB,BDSCOMMONDIR,BDSINCLUDE

當通過CCNET dcc32.exe執行具有額外的參數,如 - I,-LE,-LN,-O,-R,-U,-NB,-NH,但執行通過TFS沒有這些參數列表。

有關如何解決這些錯誤的任何想法。

在此先感謝...

+0

假設你已經運行RSVars.Bat,你還需要確保你的DCC32配置有正確的路徑。 MSBuild僅啓動DCC32。嘗試使用DCC32構建命令行。一旦你有這個工作,你可以嘗試使用MSBuild。 –

+0

@Andy_D是在運行msbuild exec任務之前運行RSVars.bat。在啓動cmd提示符並執行該命令時可以正常工作。當命令封裝在msbuild exec任務中並通過TFS構建系統運行時,會顯示錯誤。 – Santhosh

+0

因此,您運行命令提示符,調用RSVars.Bat然後運行DCC32 ,它編譯正確嗎?您可能需要在項目級別(即在您的DProj文件中)明確設置庫路徑。 –

回答

1

您的環境配置可能不正確。在調用msbuild之前,首先調用位於Delphi安裝的BIN目錄中的RSVARS.BAT文件。

如果您是從另一個構建系統調用此方法,我的建議是創建一個簡單的批處理/ cmd文件,該文件將調用RSVARS.BAT,然後執行MSBUILD,然後讓構建系統調用該文件。

如果您嘗試單獨調用RSVARS.BAT,它將修改其環境的副本,然後退出,這對父環境將不起作用。從MSBUILD腳本中添加對RSVARS.BAT的調用也會因相同原因失敗。 RSVARS.BAT必須從相同的上下文環境(或更高)調用爲MSBUILD任務。

+0

已經完成了與您通過執行任務(在msbuild文件中)調用RSVARS.bat完全相同的步驟,然後編譯delphi項目。 – Santhosh

+1

您可能需要將調用放到exec任務的RSVARS OUTSIDE之外。我相信,exec任務不會將環境複製到父級,所以可用的集合將會丟失。這就是爲什麼我建議使用批處理文件先調用RSVARS,然後再調用MSBUILD腳本。 – skamradt

+0

@skamardt我正在執行rsvars.bat作爲TFS預生成腳本執行的一部分,然後執行msbuild項目 – Santhosh