我需要在我的应用程序的许多地方更改代码。
我的应用程序中有两个库。我必须删除一个库,并且必须使用第二个库的组件才能使功能像以前一样工作。
我已经找到了哪些组件可以替换为哪些组件。就像我在第一个库中有大约 30 多个类,它们将替换第二个库组件。
是否可以创建任何脚本,我可以在其中指定哪些文本将被替换以及由哪些文本替换。
例如:A 替换为 B,C 替换为 D,E 替换为 F,G 替换为 H 等等。
它将类似于查找和替换,但不是手动的。
该应用程序在 C# 中。
我需要在我的应用程序的许多地方更改代码。
我的应用程序中有两个库。我必须删除一个库,并且必须使用第二个库的组件才能使功能像以前一样工作。
我已经找到了哪些组件可以替换为哪些组件。就像我在第一个库中有大约 30 多个类,它们将替换第二个库组件。
是否可以创建任何脚本,我可以在其中指定哪些文本将被替换以及由哪些文本替换。
例如:A 替换为 B,C 替换为 D,E 替换为 F,G 替换为 H 等等。
它将类似于查找和替换,但不是手动的。
该应用程序在 C# 中。
下面的代码将完成需要。
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);
}
如果你想处理多线需要一些努力......但也可以完成。也许使用正则表达式是个好主意......