我的項目是較大解決方案的一部分,已從dbproj轉換爲asqlproj(SSDT)。該解決方案包括一個引用SSDT項目的WiX安裝程序。 WiX項目通過VS2010在多個開發者系統上構建良好。該自動構建,我們一直使用,然而,得到這個錯誤:
error CNDL0150: Undefined preprocessor variable '$(var.DatabaseProject.TargetDir)'.
該解決方案已經通過自動TFS建成之前,這個項目被轉換構建多月沒有問題。
Project "C:\B\1\SourcePath\Server\Server.wixproj" (8) is building "C:\B\1\SourcePath\Database\DatabaseProject.sqlproj" (12) on node 1 (default targets).
...
Done Building Project "C:\B\1\SourcePath\Database\DatabaseProject.sqlproj" (default targets).
我還可以看到.dacpac和.dll文件數據庫項目中創建了:我可以從生成日誌,該項目SSDT正在修建,這裏有一些相關的線從構建日誌中看到並複製到TFS構建已將項目重定向到的輸出目錄中。
對數據庫項目的引用看起來很好,TFS構建似乎知道應該構建它,但是WiX抱怨TargetDir的未定義預處理器變量。
我必須缺少一些東西......是TFS使用的輸出重定向導致我的問題?我不知道該從哪裏出發,並感謝您可以建議的任何幫助。
更多信息
看着爲構建更加詳細,我可以看到,沒有被在命令行中傳遞給candle.exe
爲.sqlproj
項目參數的日誌文件。當我在VS2010本地構建,我可以看到通過預期的參數如下(就像由維克斯項目引用的其他項目):在TFS建立
-d"DatabaseProject.FullConfiguration=Release|AnyCPU"
-dDatabaseProject.Platform=AnyCPU
-dDatabaseProject.ProjectDir=C:\SourcePath\Database\
-dDatabaseProject.ProjectExt=.sqlproj
-dDatabaseProject.ProjectFileName=DatabaseProject.sqlproj
-dDatabaseProject.ProjectName=DatabaseProject
-dDatabaseProject.ProjectPath=C:\SourcePath\Database\DatabaseProject.sqlproj
-dDatabaseProject.TargetDir=C:\SourcePath\Database\sql\release\
-dDatabaseProject.TargetExt=.dll
-dDatabaseProject.TargetFileName=DatabaseProject.dll
-dDatabaseProject.TargetName=DatabaseProject
-dDatabaseProject.TargetPath=C:\SourcePath\Database\sql\release\DatabaseProject.dll
這些參數沒有被傳遞到candle.exe
。我想這些信息對於幫助回答這個問題可能是有用的。
任何幫助,非常感謝!
我有幾乎完全相同的設置,它在TFS上對我很好。唯一的區別是我可以看到我們正在使用VS/TFS2012。我也記得不得不重新創建sqlproj而不是升級,但不記得原因。 –
@caveman_dick感謝您的評論......我嘗試從頭開始重新創建項目,並且仍然無法獲得使用預處理器變量構建的WiX項目。也許它與2012年不同...... – Steve