Bar*_*art 5 .net c# visual-studio
由于我们的项目多年来不断发展,许多.cs文件已从项目中删除,重命名等,但仍保留在源代码管理中.因此,当您提取最新代码时,您将获得所有这些.cs文件,这些文件在任何.csproj文件中都不再被引用.
任何人都知道一种简单,可靠的机制来检测这些文件并消除它们吗?
最好使用脚本语言来执行此任务.我发现powershell非常适合这种情况.
第1步是查找csproj文件中包含的所有实际.cs文件.以下函数将在目录结构中搜索所有csproj文件,并返回这些文件中包含的.cs文件集
function Get-IncludedCsFiles() {
param ( $rootPath = $(throw "Need a path") )
$projFiles = gci -re -in *.csproj $rootPath
foreach ( $file in $projFiles ) {
$dir = split-path $file.FullName
foreach ( $line in (gc $file) ) {
if ( $line -match 'Compile\s+Include="([^"]+)"' ) {
join-path $dir $matches[1]
}
}
}
}
Run Code Online (Sandbox Code Playgroud)
现在您需要做的就是将其包装到字典中,然后在目录结构中进行搜索
$map = @{}
$pathToSearch = "Path\To\Search"
Get-IncludedCsFiles $pathToSearch |
%{
if(!$map.Contains($_))
{
$map.Add($_, $true)
}
}
$notIncluded = gci -re -in *.cs $path | ?{ -not $map.Contains($_.FullName) }
Run Code Online (Sandbox Code Playgroud)