私がやろうとしていること:Class1
assembly 内
にクラスがあるとしましょうOldAssembly
。このアセンブリは、多数の不明なプロジェクトによって参照されています。このクラスを新しいアセンブリに移動しNewAssembly
ます。最終的には名前と名前空間も変更されます。ここで、すべての使用法を調整する必要があります。これらのコード調整を自動化するツールを作成したいと考えています。
私がこれまでに行ったこと:
私は roslyn をいじりました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
、ユースケースに合わせようとしましたが、内部で使用されているために失敗しました。
質問: クラスをあるアセンブリから別のアセンブリに移動した後、コードの調整を自動化するにはどうすればよいですか。