を使用して、すべてのクラスの使用法を置き換えます は、我々はアセンブリOldAssembly
内のクラスClass1
を持っていると仮定しましょう。 このアセンブリは、多数の不明なプロジェクトによって参照されています。 このクラスを新しいアセンブリNewAssembly
に移動する予定です。最終的に名前と名前空間も変更されます。すべての用途を調整する必要があります。 これらのコード調整を自動化するツールを作成したいと思います。私がこれまでにやった私がやろうとしています何ロスリン
: 私はロスリンRenamer
の周り果たしている:
var workspace = MSBuildWorkspace.Create();
var originalSln = workspace.OpenSolutionAsync(@"D:\spikes\ToBeFixed\ToBeFixed.sln").Result;
var project = originalSln.Projects.Single();
var compilation = project.GetCompilationAsync().Result;
var renameFrom = compilation.GetSymbolsWithName(s => s.Contains("Class1")).Single();
const string renameTo = "Class2";
var optionSet = originalSln.Workspace.Options;
var modifiedSln = Renamer.RenameSymbolAsync(originalSln, renameFrom, renameTo, optionSet).Result;
workspace.TryApplyChanges(modifiedSln);
それはまた、ソースクラスの名前を変更します。だから私はRenamer
コードを調べて、それを私のユースケースに適応させようとしましたが、そこで使われている内部構造のために失敗しました。
質問: クラスをあるアセンブリから別のアセンブリに移動した後で、コードの調整を自動化する方法を教えてください。
あなたは最初にすべての名前を変更することができ、その後、その後、元のクラス名を修正しますか? – JoshVarty
はい、しかし、 "名前を戻す"の範囲を1つのクラスに減らす方法はありません。クラス宣言でクラス名だけを変更するだけでは不十分です。 –
クラスのすべての用途*を変更する必要がありますか?元のクラスを正確に元のままにしたいですか? – JoshVarty