2014-09-12 147 views
1

我試圖創建一個使用巡航控制1.8.5.0與Windows Server 2008 R2計算機上運行的TFS 2010的生成過程。我遇到的問題是當MS Build嘗試寫入剛剛複製到項目區域的文件時,它會拒絕訪問。當我查看它們被設置爲只讀的文件時,ccnet正在運行的帳戶是一個管理員,並且所有內容都在本地讀寫。我們在Windows Server 2003上有類似的環境設置,一切正常。我們已驗證運行該流程的帳戶是否正確,我已將項目文件夾的所有者設置爲運行流程的相同帳戶,我們已禁用UAC。此時我不知所措。任何額外的信息需要讓我知道。msbuild無法寫入文件

感謝 羅伯特

回答

1

//當我看到他們正在設置爲只讀文件,//

可以運行ATTRIB刪除文件上的只讀標誌。

簡單的例子:

<Exec Command=「attrib -R $(SolutionRoot)\MyCoolFile.txt「 /> 

還有一個自定義任務:

<UsingTask AssemblyFile="$(MSBuildCommunityTasksLib)" TaskName="MSBuild.Community.Tasks.Attrib" /> 

我沒有用它,但是這將是足夠的追捕下來。

我想這應該是這樣的:

<ItemGroup> 
<Files Include="$(SolutionRoot)\MySubFolder\**\*.*/> 
</ItemGroup> 

<Attrib Files="%(Files.Identity)" ReadOnly="true"/> 
+0

我敢肯定,這是在MSBuild的過程中發生的事情,我假設exec命令會之前或之後的過程完成運行它不會解決這個問題嗎?這是正確的還是我會以不同的方式運行?如果你願意,我可以發佈我的構建任務嗎? – Robert 2014-09-12 15:31:22

+0

你只需要在問題出現之前將你的主要msbuild(.proj)腳本插入到上面的東西中......其中的一個「它不應該發生,但它確實會發生」。我曾經在我的msbuild過去有過這種事......這就是我回應的原因。 – granadaCoder 2014-09-12 15:36:19

+0

好的真棒,得愛安全。感謝您的幫助。 – Robert 2014-09-12 15:54:32