1

私がやろうとしていること: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、ユースケースに合わせようとしましたが、内部で使用されているために失敗しました。

質問: クラスをあるアセンブリから別のアセンブリに移動した後、コードの調整を自動化するにはどうすればよいですか。

4

1 に答える 1