0

Visual Studio の Web プロジェクトにビルド前のイベントがあります (2012 年ですが、2010 年でも同じ動作です)。

プレビルドは、フォルダー内に一致する filename.html がある場合、すべての filename.aspx.vb ファイルを探す単純な exe を呼び出します。

その場合は、filename.html を文字列として読み取り (エスケープおよび縮小)、finename.aspx.vb にも文字列として挿入します。

myStribBuilder.Append("これは、外部ファイルからの html コードが移動する場所です")

保存した filename.html に変更を加え、Web サイトをコンパイルしてテストしたとします。filename.aspx を呼び出すときに、最新の変更を反映する必要があります。

ここで何が起こるか:

  • 1 ページか 2 ページの非常に軽いプロジェクトであれば、うまくいきます。期待どおりにコンパイルされます。

  • その後、プロジェクトが大きくなり、機能しなくなります。つまり、コードは挿入されますが、期待どおりにコンパイルされません。Web サーバーで filename.aspx を更新すると、同じバージョンのままですが、VS で filename.aspx.vb を開くと、コードがそこにあります。2 番目のコンパイルは 100% 正常に動作します。

私はそれを受け入れることができますが、html ファイルの変更後にテスト目的で毎回 2 回コンパイルする必要があります。これは私には意味がありません。

「ビルド前」とは、ビルド前ルーチンを実行する前に、実際にコンパイル要求時にコードをキャッシュしているように見える場合の意味です。

では、コンパイルが始まる前に *.vb ファイルにコードを確実に挿入するにはどうすればよいでしょうか?

4

1 に答える 1

0

問題は、VSがビルド前にexeが完了するのを待っていないことではなく、コンパイル時にfilename.aspx.vbを開いたことが原因であることがわかりました。

コードは IDE 上でそれ自体を更新します (外部で変更された開いたページを自動更新するように設定されたオプションを使用) が、コンパイル プロセスは開いたファイルのビルド前のバージョンを保持していると思います。

コンパイルする前にファイルを閉じれば問題ありません。

これに対する回避策があるのだろうかと思いますが、コンパイル前にIDEで開いたファイルをオンザフライで外部から変更することは一般的ではないことを理解しています。ただし、私はこの手法に大きく依存しています。

于 2013-01-29T21:34:59.627 に答える