我正在尝试将网站(网络表单)转换为Web应用程序(也是Web表单)。我已经通过Visual Studio中的“转换为Web应用程序”转换了所有文件;这创建了一堆designer.cs文件。
根据我的理解,这些文件包含从主.cs文件中提取的代码,以避免开发人员使用它进行调整;为了使它工作,.cs文件和.designer.cs文件中的类被声明为partial。
不幸的是,在开发.aspx页面时,类后面的代码经常被随机命名(通常只是“Page”),现在我发现了很多编译错误,这些错误在所有这些不同的页面部分类之间找到了冲突的名称。
有没有办法将这些类名重新生成适当的东西,以便它们不会相互冲突?即使只是基于文件路径的东西就足够了。
答案 0 :(得分:0)
我写了一个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