2017-10-15 11 views
0

いくつかのプロジェクトが含まれているソリューションファイルがあります。PowerShellを使用してその一部を削除したいと思います。 目的は、 "Project"で始まり、 "EndProject"で終わる文字列( "abcxyz"と言う)を含むテキストのブロックを削除することです。例えばpowershellを使用してソリューションファイルを解析する

:上記の例で

Project("{1111-2222-FFFF-3333}") = "AutoRun", "..\generate\Infra\generate\generate.csproj", "{999999-UUUUUU-GGGGGG-ABCDEFGH}" 
EndProject 
Project("{5555-2222-FFFF-3333}") = "SetupSec", "..\generate\Setup.csproj", "{999999-UUUUUU-GGGGGG-ABCDEFGH}" 
EndProject 
Project("{4444-2222-FFFF-3333}") = "Common.Fyyy", "..\generate\Infra\Common\Common.csproj", "{999999-UUUUUU-GGGGGG-ABCDEFGH}" 
EndProject 
Project("{9999-2222-FFFF-3333}") = "Command.Console", "..\generate\Path\Console.csproj", "{999999-UUUUUU-GGGGGG-ABCDEFGH}" 
EndProject 
Project("{7777-2222-FFFF-3333}") = "Infra.GUI", "..\..\generate\GUI.csproj", "{999999-UUUUUU-GGGGGG-ABCDEFGH}" 
    ProjectSection(ProjectDependencies) = postProject 
     {AAAA-2222-FFFF-3333} = {999999-UUUUUU-GGGGGG-ABCDEFGH} 
    EndProjectSection 
EndProject 

、私はプロジェクトを削除したいどのような場合でも、文字列「インフラ」が含まれています。 PowerShell Regexを使用して簡単な方法がありますか?

おかげで、

シャイ(削除はEndProjectプロジェクトから全体のソリューションファイルに行われるべきです)。

答えて

1

実際のファイルには、サンプル・データと一致していると仮定すると、あなたがすべてで正規表現を台無しにすることなく、これを行うことができます。

別々のプロジェクトにファイルを分割して、いずれかを除外します
Get-Content $ProjectFile -Delimiter 'EndProject' | 
    Where-Object {$_ -notlike '*Infra*'} | 
    Add-Content $NewProjectFile 

文字列 "Infra"を含んでいるファイルのうち、残りのファイルを新しいファイルに書き出します。

+0

実際のファイルとサンプルデータが一致しません。ソリューションファイルが厄介である – Ben

-1

あなたの質問は、「PowerShellの簡単な方法があります」との答えは次のとおりです。

ソリューションファイルがお互いに依存して様々な広く、部品が分離された厄介な古い形式です。手で編集することは可能ですが、正しくやりやすくするのは間違いです。

一部のプロジェクトを削除する場合は、Visual Studioでファイルを開き、プロジェクトを削除して保存します。

この問題は大きな問題の一部を解決することである場合は、大きな問題を解決する方法を新たに質問する必要があります。

+0

質問は具体的には「_目標は、 "Project"で始まり次の行で "EndProject"で終わる文字列を含むテキストブロックを削除することです( "abcxyz"としましょう)。あなたはそれを "powershellからVisual Studioプロジェクトを削除する"としてどのように読みますか?神だけが –

+0

を知っています@ᴳᵁᴵᴰᴼそれは私には明らかですが、あなたがそれを見ないと、あなたはそれを見ないと思います。 – Ben

+1

私はここで同意する傾向があります。ソリューションファイルは内部的に一貫している必要があり、単に参照を削除するだけでは、開くことができない(または複数の「参照がない」エラーが発生する)矛盾したファイルが簡単に発生する可能性があります。基本的にVisual Studioがすべての可能性を扱うのと同じ方法でファイルを解析する必要があります。これはregex + deleteよりもはるかに複雑です。 –

関連する問題