3

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

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

4

1 回答 1

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 更新其缓存文件,然后调用其内部编译器...

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

于 2012-08-28T16:13:46.940 回答