首页 > 解决方案 > 使用 R# 结构搜索和替换迁移代码

问题描述

我有想要迁移到新数据模型的遗留系统。它归结为许多类型名称更改。为了不破坏现有代码,我计划使用编译器开关:

#if NEW
    var variable = new MyNewType();
#else
    MyOldType variable = new MyOldType();
#endif

我创建了一个 Resharper 替换模式:

#if NEW
    var $variable$ = new $type$();
#else
    $type$ $variable$ = new $type$();
#endif

type被定义为类型占位符并且variable是标识符占位符。但是,在解析该表达式时出现语法错误:

意外占位符“变量”

是否不可能使用 Resharper 引入编译器开关,或者我哪里出错了?

标签: c#resharper-2019

解决方案


据我所知,R# 不支持这种情况。我相信这是因为 R# 依赖于当前代码的抽象语法树 (AST)。在您的情况下,AST 取决于根据是否NEW定义实际编译哪些语句。


推荐阅读