我编写了一个C#预处理器,我通过使用BeforeBuild MSBuild目标调用它来整合到我的.csproj项目中。这可以正常工作,除非预处理器修改了项目中的一个或多个C#源文件(很少发生),C#编译步骤使用源文件的缓存版本。构建完成后,Visual Studio会提示我一条消息“filename-this-or-that此文件已在源代码编辑器之外进行了修改。是否要重新加载它?”。那么我必须回复是并重建项目以使其使用修改后的源文件。
是否有某种方法可以让Visual Studio检测到源文件已被修改并在编译步骤中使用更新版本?或者我应该以其他方式调用我的预处理器而不是使用BeforeBuild目标?
答案 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更新其缓存文件然后调用其内部编译器的方法......
我将此标记为“答案”,但我仍然希望听到更好的可能性,如果发生这种情况,我将取消标记这个。