2012-02-13 26 views
3

私は、BeforeBuild MSBuildターゲットを使用して呼び出すことで、自分の.csprojプロジェクトに組み込んだC#プリプロセッサを作成しました。これは、プリプロセッサがプロジェクト内のC#ソースファイルの1つまたは複数を変更した場合(まれにしか発生しない)、C#コンパイルステップでソースファイルのキャッシュバージョンが使用される点を除いて、問題なく動作します。ビルドが完了したら、Visual Studioは "filename-this-or-thatこのファイルはソースエディタの外で修正されました。再ロードしますか?"というメッセージを表示します。だから私ははいに返信し、修正されたソースファイルを使用するようにプロジェクトを再構築する必要があります。BeforeBuild処理後にVisual Studioでソースファイルを再読み込みする方法

Visual Studioでソースファイルが変更されたことを検出し、コンパイルステップで更新されたバージョンを使用する方法はありますか?または、BeforeBuildターゲットを使用するのではなく、別の方法でプリプロセッサを呼び出す必要がありますか?

+0

私は[SetVersionTask](https://bitbucket.org/markheath/setversiontask)プロジェクトで同じ問題を抱えています。 –

答えて

2

これは最適な解決策ではありませんが、私がこれまでに考え出したベストです。ここで説明http://social.msdn.microsoft.com/Forums/en-US/vsdebug/thread/6c042390-0782-4afe-94be-9746d75f5d34/として

あなたは.csprojファイルに

<UseHostCompilerIfAvailable>false</UseHostCompilerIfAvailable> 

を配置することができ、それは「通常の」C#コンパイラの代わりに、キャッシュされたファイルを使用して「内部」いずれかを使用するVisual Studioのを取得します。これはおそらくパフォーマンスを低下させますが、私はそれに気づいていないか、それを測定しようとしました。

また、http://startbigthinksmall.wordpress.com/2009/03/16/visual-studio-tipp-auto-refresh-file-changes/に記載されているように、Visual Studioでアップデートされたファイルに関する話題を取り止め、簡単に再読み込みすることができます。

私はまだそのキャッシュファイルを更新してから、その内部コンパイラを呼び出すためのVisual Studioを伝えるいくつかの方法を見つけることを好むだろう...

私は「答え」としてこれをマークするんだけど、私はまだだろうより良い可能性を聞くのが好きで、それが起これば、私はこれをマークしません。

関連する問題