2017-05-04 10 views
0

Webサイト(Webフォーム)をWebアプリケーション(Webフォーム)に変換しようとしています。私はVisual Studioから "Convert to Web Application"経由ですべてのファイルを変換しました。これはdesigner.csファイルの束を作成しました。クラス名をaspxファイルに再生成

これらのファイルには、主な.csファイルから抽出されたコードが含まれているので、開発者がそのファイルを修正するのを避けることができます。 .csファイルと.designer.csファイルの両方のクラスが機能するように、部分的に宣言されています。

残念ながら、.aspxページを開発するとき、コードビハインドクラスはしばしばランダムに(しばしば単に「ページ」と呼ばれる)名前を付けられましたが、これらの異なるページの部分クラス間で矛盾する名前を見つける大量のコンパイルエラーが見つかりました。

これらのクラス名を互いに競合しないように適切なものに再生成する方法はありますか?ファイルへのパスに基づいたものでさえあれば十分でしょう。

+0

ウェブサイトからウェブアプリケーションに変換する。 –

+0

私は同意する、それが最善のことです。それを変換する前にプロジェクトを準備します。 –

+0

手動で名前を変更することはおそらくオプションではありません。数日かかるでしょう。 – Shoe

答えて

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 
関連する問題