在整个应用程序的许多地方自动更改代码

本文关键字:方自动 代码 许多地 应用程序 | 更新日期: 2023-09-27 18:10:53

我需要在应用程序的许多地方更改代码。

我的应用程序中有两个库。我必须删除一个库,并且必须使用第二个库的组件才能使功能像以前一样工作。

我已经发现哪些组件需要替换哪些组件。就像我在第一个库中有大约30多个类,它们将取代第二个库组件。

是否可以创建任何脚本,其中我可以指定哪些文本将被替换以及由哪些文本替换。

例如:A由B代替,C由D代替,E由F代替,G由H代替,等等

它将类似于查找和替换,但不是手动

在整个应用程序的许多地方自动更改代码

下面的代码将完成所需的操作。

var replaces = new Dictionary<string, string>() { { "A", "B" }, { "C", "D" }, {"E","F"} };
var files = Directory.GetFiles(@"C:'Folder'", "*.txt",SearchOption.AllDirectories);
foreach (var file in files) 
{
  var text = File.ReadAllText(file);
  foreach (KeyValuePair<string, string> ky in replaces)
  {
       text = text.Replace(ky.Key.ToString(), ky.Value.ToString());
  }
  string [] splittedpath = file.ToString().Split('''');
  string DirectoryPath = @"C:'Folder'Replaced Files'";
  string FilePath = "";
  for (int i = 0 ; i < splittedpath.Length ; i++)
  {
      if (i != 0 && i != 1 && i != (splittedpath.Length -1))
      {
          DirectoryPath = DirectoryPath + splittedpath[i].ToString() + @"'"; 
      }
       if(i == (splittedpath.Length -1))
       {
           FilePath = DirectoryPath + splittedpath[i].ToString();
       }
  }
  Directory.CreateDirectory(DirectoryPath);
  File.WriteAllText(FilePath, text);
}

这将创建具有相同目录结构的新文件,而不会替换现有文件。

开发一个自定义工具。

  var replaces = new Dictionary<string, string>() { {"A","B"}, {"C","D"}, ...};
  var files = Directory.GetFiles(path, "*.cs", Recursive);
  foreach (var file in files) {
       var text = File.ReadAllText(file);
       foreach(var replace in replaces) text = text.replace(replace.key, replace.value);
       File.WriteAllText(file);
  }

如果你想处理多行需要一些努力…但也可以完成。也许使用regexp是一个好主意…