C# 批量更改具有条件编译属性的命名空间
假设我们有一个现有的代码作为C# 批量更改具有条件编译属性的命名空间,c#,regex,C#,Regex,假设我们有一个现有的代码作为 namespace Company.Product1 { class Class1 { } } 现在我们需要改变基于条件符号的名称空间,使其成为 #if PRODUCT1 namespace Company.Product1 #else namespace Company.Product2 #endif { class Class1 { } } 由于我们有数百个类,手动操作将花费大量时间。有什么简单的方法吗?或
namespace Company.Product1
{
class Class1
{
}
}
现在我们需要改变基于条件符号的名称空间,使其成为
#if PRODUCT1
namespace Company.Product1
#else
namespace Company.Product2
#endif
{
class Class1
{
}
}
由于我们有数百个类,手动操作将花费大量时间。有什么简单的方法吗?或者我如何使用正则表达式来实现这一点
任何帮助都将不胜感激。在两个不同的名称空间中使用相同的代码似乎是一种反模式,但您可能有一些我不知道的原因,因此我将尝试回答您的问题。另外,请注意,像Resharper这样的工具可以很容易地使用重构工具重命名整个名称空间 要简单地替换每个源文件中的名称空间定义,可以使用Visual Studio 2013文本编辑器(在以前的版本中也应可用): 1) 选择编辑查找并替换快速替换 2) 在搜索词文本框中输入文本名称空间Company.Product1 3) 在替换术语文本框中输入文本#if PRODUCT1\nnamespace Company.PRODUCT1\n#else\nnamespace Company.Product2\n#endif。请注意如何使用\n输入换行符 4) 确保选中了使用正则表达式。此选项允许您在替换文本中转义换行。您还可以检查匹配大小写和匹配整个单词 5) 将范围设置为整个解决方案
6) 单击“全部替换”进行替换。可能重复“在两个不同的名称空间中使用相同的代码似乎是一种反模式,但您可能有一些我不知道的原因,因此我将尝试回答您的问题。”感谢您的这种态度。并非每个向SO发帖的人都能控制他们所处的更大的技术环境。