我正在尝试做的事情:
假设我们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
代码并尝试对其进行调整以适应我的用例,但由于其中使用了一些内部组件而失败了。
问题: 将一个类从一个程序集移到另一个程序集后,如何自动调整代码。