Мы работаем над несколькими проектами ASP.NET MVC C# в Visual Studio 2015 и Team Foundation Server 2013. Иногда процесс обновления NuGet является беспорядком и некоторыми замененными файлами (в основном * .png, * .gif, * .ttf) не были проверены правильно. Что мы догадались до сих пор: процесс регистрации попадает в проблему, если каталоги должны быть удалены и созданы за один шаг. Вы должны зарегистрироваться дважды. Проблема в том, что если вы не знаете об этом, и один из наших разработчиков получает последний источник, есть недостающие файлы. Visual Studio указывает, что с предупреждающим знаком в обозревателе решений.TFS: Как проверить, зарегистрирован ли каждый файл?
Мой вопрос: Можно ли проверить, есть ли каждый файл во время gated-checkin или night-build на TFS, который связан в файле csproj? По крайней мере, во время сборки должно быть предупреждение.
Подсказка: это только проблема с файлами, которые не скомпилированы (файлы * .cs) или не имеют настройки «copy во время сборки в выходной каталог». Это происходит, например, с 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, изменил мое определение сборки, добавлен каталог сценария к моей «Настройке Source» и включить скрипт в «Pre -build script path ". Готово!
Вы хотите отметить, что обновление Nuget заменит ваши файлы изображений? Восстановлены ли эти файлы изображений Nuget? Вы проверяете все решение или отдельный файл? –
Материал NuGet был просто примером из-за этой проблемы. Вопросы находятся в точке «Мой вопрос ...» ;-) – SiMiDev