強制的にASP .NET WebFormsデザイナーファイルを再生する


これは比較的短いポストになるだろう.私は、彼らのASPを合併する会社で働いていました.MVCプロジェクトを使用したNet WebFormプロジェクト.それは経験でした.
これは主にオリジナルのプロジェクトがWebサイトではなく、Webプロジェクトであったからです.ASPXファイルは時間前にコンパイルされませんでした.これらの2つのプロジェクトをマージして、私はウェブプロジェクト+ MVCに移動することができました.
プロジェクトは非常に大きく、ユーザーコントロールを除いてほとんど簡単です.問題は、コンパイルされたユーザーコントロールに移動すると、変更される命名の束がありました.それはすべて、良いですが、Visual Studioは本当にゆっくりやっていたと私は少し狂った.その一部は、私のためにデザイナーファイルを再現していたからでした.私は賢く思ったし、ビジュアルスタジオの外に名前を変更の束をした.そうでした.
私は多くのエラーがたくさんあったので終了しました.ASPXページはデザイナーファイルと同期していなかった.約200のファイルがあるので、オープン、変更、および新しいデザイナーファイルを取得する各ファイルを保存の見通しは問題外だった.
幸運にも、私はTwitterにいます.
私は手を伸ばして、私のお尻を保存しました.もし私のような場合は、Visual Studioがマクロをサポートしていることを覚えているかもしれません.ミックは、その機能を戻すためにアドインをインストールすることができることを思い出しました.

Macros for Visual Studio


私はマクロをインストールした後、私はすべてのプロジェクトを歩いて、すべてのデザイナーファイルを再生成する強制的に例の1つを再加工.私は、誰かがそこにこのスクリプトを必要とするかもしれないと思いました.はい、
// Based on the Headify example from https://github.com/Microsoft/VS-Macros

// Iterate over all files
iterateFiles();

function iterateFiles() {
  for (var i = 1; i <= dte.Solution.Projects.Count; i++) {
    iterateProjectFiles(dte.Solution.Projects.Item(i).ProjectItems);
  }
}

function iterateProjectFiles(projectItems) {
  for (var i = 1; i <= projectItems.Count; i++) {
    var file = projectItems.Item(i);

    if (file.SubProject != null) {
      formatFile(file);
      iterateProjectFiles(file.ProjectItems);
    } else if (file.ProjectItems != null && file.ProjectItems.Count > 0) {
      formatFile(file);
      iterateProjectFiles(file.ProjectItems);
    } else {
      formatFile(file);
    }
  }
}

function formatFile(file) {
  dte.ExecuteCommand("View.SolutionExplorer");
  if (file.Name.indexOf(".aspx", file.Name.length - ".aspx".length) !== -1) {
    file.Open();
    file.Document.Activate();

    // Add a space
    Macro.Inser
    dte.ActiveDocument.Selection.StartOfDocument(false);
    dte.ActiveDocument.Selection.Insert(" ");

    // Remove a Space
    dte.ActiveDocument.Selection.StartOfDocument(false);
    dte.ActiveDocument.Selection.Delete(1);

    // Save the document
    file.Document.Save();
    file.Document.Close();
  }
}

コードを読み込む場合は、すべてのファイルを繰り返し実行し、formatfile ()をコールしてください.フォーマットファイルで確認します.そして、ファイルの上部にスペースを追加します.削除したファイルを強制的に削除して保存します.
これを実行し、完了し、voilaに必要な20分を待ちました.
誰もレガシープロジェクトに取り組んで好きではないが、私はこのような奇妙な、狂気の修正を私のクライアントを助けることができることを嬉しく思っています.
HTH

Shawn Wildermuthによるこの仕事は、Creative Commons Attribution-NonCommercial-NoDerivs 3.0 Unported Licenseの下で認可されます.
wildermuth.comの仕事に基づきます.
あなたがこの記事が好きであるならば、Pluralsightの上でショーンのコースを見てください.