2012-12-05 25 views
2

我目前正在將我的項目代碼轉移到使用新的Team Foundation Service。我試圖設置門控構建,以便在檢查新代碼時運行(並在解決方案中運行單元測試),但每次構建TFS時都會收到相同的錯誤。TFS與App.config文件構建問題(錯誤3719)

這是我不斷收到錯誤: My MSBuild error

這裏是與此交易的診斷日誌的部分:Error Log

我三重檢查有關App.config文件:這是在源代碼管理。另外,失敗的項目正在其他地方建造,沒有任何問題。

當我在Visual Studio 2012中生成時,它工作正常。當我從命令行使用MSBuild構建它時,它工作正常。我甚至在本地機器上安裝了Team Foundation Server 2012,以便我可以使用Team Foundation Service用於MSBuild的確切命令行參數。這工作得很好。

如果您需要更多信息,我將很樂意提供。在此先感謝您的幫助。

編輯:Here's a link到MSDN TFService論壇上的這個問題,其中也有完整的診斷日誌。

EDIT(12/12):在做伊利亞的建議(在下面他的回答),我得到這個從日誌:

Larger log error

+0

您是否在構建服務器上運行防病毒軟件? –

+0

構建服務器在雲上。 – IronMan84

+0

你可以檢查文件是否簽出並存在嗎?可能會將帶有'的'** \ *。*'itemgroup放入失敗的csproj中。 –

回答

1

好吧,我終於得到了這個工作。好哇!

根據以上鍊接中的MSDN討論,DataLayerExtensions項目的app.config文件以某種方式損壞。從源代碼控制中刪除它,然後重新制作配置文件,這是個訣竅。請注意,從12/12編輯的圖片中的錯誤不是指向DataLayer項目!它實際上是在構建DataLayerExtensions項目的依賴項(GlobalItems和DataLayer)之後建立的第一行!這裏有一點點細微差別。

隨後,還出現了其他的app.config錯誤 - 所有這些都是因爲實際上沒有在源代碼管理中或與DataLayerExtensions配置文件具有相同的損壞。

最後要說的一點是,對於TFService來說,如果使用任何第三方工具,即使它在本地機器上正常生成,您也會在構建服務中收到錯誤。爲了解決這個問題,我必須創建一個新文件夾,將這些第三方程序集複製到它中,讓所有相關項目將其引用切換到該文件夾​​中的.dll文件,然後繼續檢查它。一旦完成後,構建成功完成。

關於爲什麼Excel API也像第三方工具一樣被拒絕,MSDN鏈接上仍然存在一個突出問題,但這超出了這個問題的範圍。

0

嘗試添加一些像這樣失敗的csproj並運行它雲,可能會泄露爲什麼app.config缺失。可能是其他一些自定義事件刪除/重命名導致msbuild失敗?

<Target Name="AfterBuild"> 
    <Warning Text="### DEBUG ###" /> 
    <ItemGroup> 
    <All Include="**\*.*" /> 
    <Compile> 
     <Exists Condition="!Exists('%(Identity)')">FALSE</Exists> 
    </Compile> 
    <AppConfigWithTargetPath> 
     <Exists Condition="!Exists('%(Identity)')">FALSE</Exists> 
    </AppConfigWithTargetPath> 
    </ItemGroup> 
    <Warning Text="### All: %(All.Identity)" /> 
    <Warning Text="### Compile: %(Compile.Exist) # %(Compile.Identity)" /> 
    <Warning Text="### App: %(AppConfigWithTargetPath.Exist) # %(AppConfigWithTargetPath.Identity) # %(AppConfigWithTargetPath.FullPath)" /> 
</Target>  
+0

上面顯示的結果。 – IronMan84

+0

我相信它是DataLayerExtensions項目失敗,而不是GlobalItems,你可以將它添加到該項目嗎? –

+0

完成,但我認爲現在錯誤可能在DataLayer項目中。 – IronMan84