在BeforeBuild处理之后如何让Visual Studio重新读取源文件?

时间:2012-02-13 13:45:14

标签: visual-studio-2010 visual-studio visual-studio-2012

我编写了一个C#预处理器,我通过使用BeforeBuild MSBuild目标调用它来整合到我的.csproj项目中。这可以正常工作,除非预处理器修改了项目中的一个或多个C#源文件(很少发生),C#编译步骤使用源文件的缓存版本。构建完成后,Visual Studio会提示我一条消息“filename-this-or-that此文件已在源代码编辑器之外进行了修改。是否要重新加载它?”。那么我必须回复是并重建项目以使其使用修改后的源文件。

是否有某种方法可以让Visual Studio检测到源文件已被修改并在编译步骤中使用更新版本?或者我应该以其他方式调用我的预处理器而不是使用BeforeBuild目标?

1 个答案:

答案 0 :(得分: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更新其缓存文件然后调用其内部编译器的方法......

我将此标记为“答案”,但我仍然希望听到更好的可能性,如果发生这种情况,我将取消标记这个。