批量更改带有条件编译属性的命名空间

时间:2014-04-23 13:20:57

标签: c# regex

假设我们现有代码为;

namespace Company.Product1
{
    class Class1
    {

    }
}

现在我们需要根据条件符号更改命名空间,使其成为;

#if PRODUCT1
namespace Company.Product1
#else
namespace Company.Product2
#endif
{
    class Class1
    {

    }
}

由于我们有数百个课程,因此需要花费大量时间进行手动操作。有什么简单的方法吗?或者如何使用正则表达式执行此操作?

任何帮助将不胜感激。

1 个答案:

答案 0 :(得分:2)

在两个不同的命名空间中使用相同的代码似乎是一种反模式,但是你可能有一些我不知道的原因,所以无论如何我都会尝试回答你的问题。另外,请注意像Resharper这样的工具可以使用重构工具轻松重命名整个命名空间。

要简单地替换每个源文件中的命名空间定义,您可以使用Visual Studio 2013文本编辑器(也应该在以前的版本中使用):

1)选择修改> 查找和替换> 快速替换

2)在搜索字词文本框中输入文字命名空间Company.Product1

3)在替换术语文本框中输入文本 #if PRODUCT1 \ nnamespace Company.Product1 \ n #nocout \ nnamespace Company.Product2 \ n#endif 。请注意如何使用 \ n 输入换行符。

4)确保选中使用正则表达式。这是允许您在替换文本中转义换行符的选项。您还可以查看匹配大小写匹配整个单词

5)将范围设置为整个解决方案

6)点击全部替换进行替换。