作为巨大重构的一部分,我删除了一些重复的类和枚举。我移动了名称空间并重新构建了一切,以便将来更容易维护。
除了一件事之外,所有更改都已编写过。如果尚未插入数据协定命名空间,我需要在每个使用另一个命名空间的文件中插入数据协定命名空间。
我目前所拥有的代码不起作用,但我认为这是我需要的。
function Insert-Usings{
trap {
Write-Host ("ERROR: " + $_) -ForegroundColor Red
return $false
}
(Get-ChildItem $base_dir -Include *.asmx,*.ascx,*.cs,*.aspx -Force -Recurse -ErrorAction:SilentlyContinue) | % {
$fileName = $_.FullName
(Get-Content $fileName) |
Foreach-Object
{
$_
if ($_ -cmatch "using Company.Shared;") {
$_ -creplace "using Company.Shared;", "using Company.Common;"
}
elseif ($_ -cmatch "using Company") {
#Add Lines after the selected pattern
"using Company.Services.Contracts;"
}
else{
$_
}
}
} | Set-Content $fileName
}
编辑:代码倾向于使用“Company.Services.Contracts”语句输出(用 - 覆盖整个文件)。
答案 0 :(得分:3)
目前还不太清楚你到底要做什么,但我会试着猜测,看看我在代码中的评论。我认为原始代码包含一些错误,一个是严重的:Set-Content
用于错误的管道/循环。这是更正后的代码。
function Insert-Usings
{
trap {
Write-Host ("ERROR: " + $_) -ForegroundColor Red
return $false
}
(Get-ChildItem $base_dir -Include *.asmx,*.ascx,*.cs,*.aspx -Force -Recurse -ErrorAction:SilentlyContinue) | % {
$fileName = $_.FullName
(Get-Content $fileName) | % {
if ($_ -cmatch "using Company\.Shared;") {
# just replace
$_ -creplace "using Company\.Shared;", "using Company.Common;"
}
elseif ($_ -cmatch "using Company") {
# write the original line
$_
# and add this after
"using Company.Services.Contracts;"
}
else{
# write the original line
$_
}
} |
Set-Content $fileName
}
}
例如,它取代了这个:
xxx
using Company.Shared;
using Company;
ttt
用这个:
xxx
using Company.Common;
using Company;
using Company.Services.Contracts;
ttt
注意:大概你不应该多次将此代码应用于源代码,代码不是为此设计的。