我們正在研究Visual Studio 2015和Team Foundation Server 2013中的幾個ASP.NET MVC C#項目。有時NuGet升級過程是一團糟,一些被替換的文件(主要是* .png,* .gif,* .ttf )沒有正確登記。 到目前爲止我們已經發現:如果目錄應該一步刪除並創建,則簽入過程會陷入困境。你必須登記兩次。問題是,如果您不知道這一點,並且我們的開發人員檢索最新的源代碼,則會丟失文件。 Visual Studio通過解決方案資源管理器中的警告圖標指示。TFS:如何驗證每個文件是否簽入?
我的問題是:是否有可能驗證,如果每個文件都存在於gated-checkin期間或每晚在csproj文件中鏈接的TFS上構建?至少在構建過程中應該有警告。
提示:這只是一個文件的問題,它沒有被編譯(* .cs文件),或者沒有設置「在構建到輸出目錄期間複製」。這發生在例如與JS文件捆綁在一起。
最終的解決方案:
Write-Host "Check availability for all referenced files in all projects ..."
function Check-Files($directory, $files){
if (!$directory.EndsWith("/")) { $directory = "$($directory)/" }
ForEach($file in $files){
if($file){
Write-Host " Referenced file $($directory)$file"
if(-not (Test-Path "$($directory)$($file)")){
throw [System.IO.FileNotFoundException] "$($directory)$($file) not found."
}
}
}
}
function CheckProjectFile($csprojFile){
[xml]$projectContent = Get-Content $csprojFile
Write-Host "Checking project: $($csprojFile) ..."
$directory = Split-Path $csprojFile
ForEach($itemGroup in $projectContent.Project.ItemGroup){
Check-Files -files $itemGroup.Reference.HintPath -dir $directory
Check-Files -files $itemGroup.Compile.Include -dir $directory
Check-Files -files $itemGroup.None.Include -dir $directory
Check-Files -files $itemGroup.Content.Include -dir $directory
Check-Files -files $itemGroup.TypeScriptCompile.Include -dir $directory
Check-Files -files $itemGroup.ProjectReference.Include -dir $directory
}
}
$csprojFiles = Get-ChildItem -Path ./ -Recurse *.csproj | Select-Object -Property FullName
ForEach($file in $csprojFiles){
CheckProjectFile($file.FullName)
}
我加入了腳本文件到我的團隊項目上TFS,改變了我的生成定義,添加腳本目錄以我的「源設置」,包括劇本到「預「生成腳本路徑」。完成!
你的意思是Nuget升級會替換你的圖片文件嗎?這些圖像文件是否由Nuget恢復?你是否檢查整個解決方案或單個文件? –
NuGet的東西只是這個問題的一個例子。問題在於「我的問題是......」;-) – SiMiDev