2012-02-13 42 views
3

我已經編寫了一個C#預處理程序,通過使用BeforeBuild MSBuild目標調用它,將其納入到.csproj項目中。這工作正常,只是當預處理器修改了項目中的一個或多個C#源文件時(很少發生),C#編譯步驟使用源文件的緩存版本。構建完成後,Visual Studio會提示我「filename-this-or-that該文件已在源代碼編輯器之外進行了修改,是否要重新加載?」。那麼我必須回覆Yes並重建項目以使其使用修改後的源文件。如何讓Visual Studio在BeforeBuild處理後重新讀取源文件?

是否有某種方式讓Visual Studio檢測到源文件已被修改並在其編譯步驟中使用更新的版本?或者我應該以其他方式調用預處理器而不是使用BeforeBuild目標?

+0

我與我的[SetVersionTask](https://bitbucket.org/markheath/setversiontask)項目有同樣的問題。 – 2012-11-08 15:08:05

回答

2

這不是一個最佳的解決方案,但它是迄今爲止我所提出的最好的解決方案。

如這裏http://social.msdn.microsoft.com/Forums/en-US/vsdebug/thread/6c042390-0782-4afe-94be-9746d75f5d34/記錄您可以將

<UseHostCompilerIfAvailable>false</UseHostCompilerIfAvailable> 
在.csproj的文件

,並獲取Visual Studio來使用,而不是使用緩存的文件「內部」一個「正常的」 C#編譯器。這大概會降低性能,但我沒有注意到它,或者試圖測量它。

而且,如這裏所記錄的http://startbigthinksmall.wordpress.com/2009/03/16/visual-studio-tipp-auto-refresh-file-changes/,您可以讓Visual Studio停止嘮叨您更新的文件,並重新加載它們。

我還是喜歡找告訴Visual Studio來更新其緩存文件,然後調用其內部編譯器的一些方法...

我這個標記爲「答案」,但我還是喜歡聽到更好的可能性,如果發生這種情況,我會取消這個標記。

相關問題