在 aspx 文件中重新生成 class 个名称
Regenerate class names in aspx files
我正在尝试将网站(Web 表单)转换为 Web 应用程序(也是 Web 表单)。我已经通过 "Convert to Web Application" 从 Visual Studio 转换了所有文件;这创建了一堆 designer.cs 个文件。
据我了解,这些文件包含从主 .cs 文件中提取的代码,以避免开发人员修改它;并使其工作 .cs 文件和 .designer.cs 文件中的 classes 被声明为部分文件。
不幸的是,在开发 .aspx 页面时,class 后面的代码经常被随机命名(通常只是 "Page"),现在我发现了一大堆编译错误,这些错误在所有代码之间发现了冲突的名称这些不同的页面部分 class。
有什么方法可以将这些 class 名称重新生成为适当的名称,以免它们相互冲突?即使只是基于文件路径的东西也足够了。
我写了一个 Python 脚本来执行此操作。如果有人需要,这里是:
import fnmatch
import os
import re
def get_all_aspx_files(dir):
aspx_files = []
for root, dirnames, filenames in os.walk(dir):
for filename in fnmatch.filter(filenames, '*.aspx'):
aspx_files.append(os.path.join(root, filename))
return aspx_files
def generate_class_name(file):
class_name = file\
.replace('./', '')\
.replace('/', '_')\
.replace('-', '_')\
.replace('.aspx', '')
return class_name
def inplace_regex_replace(filename, pattern, replace):
with open(filename) as f:
s = f.read()
with open(filename, 'w') as f:
s = re.sub(pattern, replace, s)
f.write(s)
aspx_files = get_all_aspx_files('.')
for file in aspx_files:
cs_file = file + '.cs'
designer_cs_file = file + '.designer.cs'
class_name = generate_class_name(file)
inplace_regex_replace(file, 'Inherits="[A-Za-z0-9_]+"', 'Inherits="%s"' % class_name)
inplace_regex_replace(cs_file, 'public partial class [A-Za-z0-9_]+', 'public partial class %s' % class_name)
try:
inplace_regex_replace(designer_cs_file, 'public partial class [A-Za-z0-9_]+', 'public partial class %s' % class_name)
except IOError as e:
print e
您只需要将它放在项目的根目录下,然后 运行 使用:
python script.py
我正在尝试将网站(Web 表单)转换为 Web 应用程序(也是 Web 表单)。我已经通过 "Convert to Web Application" 从 Visual Studio 转换了所有文件;这创建了一堆 designer.cs 个文件。
据我了解,这些文件包含从主 .cs 文件中提取的代码,以避免开发人员修改它;并使其工作 .cs 文件和 .designer.cs 文件中的 classes 被声明为部分文件。
不幸的是,在开发 .aspx 页面时,class 后面的代码经常被随机命名(通常只是 "Page"),现在我发现了一大堆编译错误,这些错误在所有代码之间发现了冲突的名称这些不同的页面部分 class。
有什么方法可以将这些 class 名称重新生成为适当的名称,以免它们相互冲突?即使只是基于文件路径的东西也足够了。
我写了一个 Python 脚本来执行此操作。如果有人需要,这里是:
import fnmatch
import os
import re
def get_all_aspx_files(dir):
aspx_files = []
for root, dirnames, filenames in os.walk(dir):
for filename in fnmatch.filter(filenames, '*.aspx'):
aspx_files.append(os.path.join(root, filename))
return aspx_files
def generate_class_name(file):
class_name = file\
.replace('./', '')\
.replace('/', '_')\
.replace('-', '_')\
.replace('.aspx', '')
return class_name
def inplace_regex_replace(filename, pattern, replace):
with open(filename) as f:
s = f.read()
with open(filename, 'w') as f:
s = re.sub(pattern, replace, s)
f.write(s)
aspx_files = get_all_aspx_files('.')
for file in aspx_files:
cs_file = file + '.cs'
designer_cs_file = file + '.designer.cs'
class_name = generate_class_name(file)
inplace_regex_replace(file, 'Inherits="[A-Za-z0-9_]+"', 'Inherits="%s"' % class_name)
inplace_regex_replace(cs_file, 'public partial class [A-Za-z0-9_]+', 'public partial class %s' % class_name)
try:
inplace_regex_replace(designer_cs_file, 'public partial class [A-Za-z0-9_]+', 'public partial class %s' % class_name)
except IOError as e:
print e
您只需要将它放在项目的根目录下,然后 运行 使用:
python script.py