我的項目經理指派我維護構建,但它是我第一次接觸MSBuild,所以事情有點困難,因爲大多數第一次接觸。 :)
我一直在努力讓MSBuild/Team Build將一些文件複製到我的項目的「bin」文件夾,但直到現在還沒有成功。
這些文件保存在我們用作依賴項和適配器的存儲庫的文件夾中,因爲我們需要能夠彼此獨立地編譯解決方案,因此當MSBuild開始工作並評估ItemGroup時,所有必需的文件都已存在。 我的最後一次嘗試是調用複製任務在「BeforeDropBuild」的目標,就像這樣:問題使用MSBuild的複製任務(VS2005TS團隊建設)
<Target Name="BeforeDropBuild">
<Delete Files="@(DebugPoints)" ContinueOnError="true"></Delete>
<Copy SourceFiles="@(Adapters)" DestinationFolder="$(TargetDir)" ContinueOnError="true"></Copy>
</Target>
我在這已經工作了一段時間,因爲它基本上所有剩下的由我來完成這個建設,所以我已經嘗試了很多不同的方法,但都沒有給我預期的結果。
我試過的一些薄片是:
- 「DestinationFolder」的完整路徑作爲值;
- 刪除構建後複製文件;
- 在「AfterBuild」目標上覆制文件;
但是他們看起來都是一樣的:甚至連BuildLog失敗的嘗試都無法幫助我找出錯誤的地方。像代碼現在,它給我甚至PDB文件不能在其他一些文件夾排除日誌,但沒有提及複製的嘗試,像這樣的:
Target BeforeDropBuild:
Deleting file "D:\blablabla\filepath\file.pdb".
MSBUILD : warning MSB3061: Unable to delete file "D:\blablabla\filepath\file.pdb". Access to the path 'D:\blablabla\filepath\file.pdb' is denied.
The previous error was converted to a warning because the task was called with ContinueOnError=true.
Build continuing because "ContinueOnError" on the task "Delete" is set to "true".
完成建設目標「BeforeDropBuild」項目「TFSBuild.proj」。
這似乎是一個非常基本的問題,但我都沒有想法,甚至沒有搜索幫助我在這方面(這也讓我認爲它是非常基本的)。
編輯:
<Target Name="AfterDropBuild">
<CreateItem Include="$(AdaptersFolder)\Adapter*.dll">
<Output ItemName="Adaptadores" TaskParameter="Include"/>
</CreateItem>
<CreateProperty Value="$(DropLocation)\$(BuildNumber)\%(ConfigurationToBuild.FlavorToBuild)">
<Output ItemName="ReleaseFolder" TaskParameter="Value"/>
</CreateProperty>
<Copy DestinationFolder="$(ReleaseFolder)" SourceFiles="@(Adaptadores)" ContinueOnError="true"></Copy>
<OnError ExecuteTargets="Error"/>
</Target>
另一個不成功的嘗試。無論如何,這不是正確的目錄,但同樣,沒有文件被複制,甚至沒有提到日誌文件上的AfterDropBuild目標。
對我來說工作得很好的一種技術是將msbuild輸出設置爲冗長。跟蹤錯誤更容易 – gyurisc 2010-02-12 18:42:36
您也可以使用filemon或進程監視器來找出您想要刪除的文件有什麼問題。也許它不存在或者你沒有文件夾的權利 – gyurisc 2010-02-12 18:44:50
我通過VS2005上的團隊構建功能使用MSBuild,你知道我可以在哪裏設置輸出詳細程度嗎?但無論如何,我會說它可能已經配置了這種方式,因爲我的BuildLog.txt結束了5MB左右的東西。 – wintermute 2010-02-12 18:47:26