2017-05-04 1 views
0

Ich versuche, eine Website (Web Forms) in eine Webanwendung (auch Webformulare) zu konvertieren. Ich habe alle Dateien über "In Webanwendung konvertieren" von Visual Studio konvertiert; Dies hat eine Reihe von Designer.cs-Dateien erstellt.Generieren Sie Klassennamen in ASPX-Dateien

Von dem, was ich verstehe, enthalten diese Dateien Code, der aus der Hauptdatei .cs extrahiert wird, um Entwickler daran zu hindern; und damit es funktioniert, werden die Klassen in der .cs-Datei und der .designer.cs-Datei als partiell deklariert.

Leider bei der Entwicklung von ASPX-Seiten wurde der Code hinter der Klasse oft zufällig benannt (oft nur "Seite") und jetzt finde ich eine ganze Reihe von Kompilierungsfehlern, die widersprüchliche Namen zwischen all diesen verschiedenen Seiten teilweise Klasse finden.

Gibt es eine Möglichkeit, diese Klassennamen zu etwas angemessen zu regenerieren, so dass sie nicht miteinander in Konflikt stehen? Selbst etwas, das auf dem Pfad zur Datei basiert, würde reichen.

+0

Vielleicht könnten Sie den Code hinter Dateien, bevor Sie umbenennen Konvertieren von Website zu Webanwendung. –

+0

Ich stimme zu, das ist das Beste, was zu tun ist. Bereiten Sie das Projekt vor dem Konvertieren vor. –

+0

Das manuelle Umbenennen ist wahrscheinlich keine Option. Es würde Tage dauern. – Shoe

Antwort

0

Ich schrieb ein Python-Skript, das das tut. Wenn jemand braucht das, hier ist es:

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 

Sie müssen es nur an der Wurzel Ihres Projekts platzieren und führen Sie es dann mit:

python script.py