在使用Roslyn编译C#项目时,如何避免完全重新编译?

在使用Roslyn编译C#项目时,如何避免完全重新编译?,c#,compilation,roslyn,C#,Compilation,Roslyn,我正在我的一个C#项目中使用Roslyn生成一些代码。目前Roslyn将接管整个项目,从头开始编译,然后写出我想要的代码。这需要完全重新编译,这有点慢。当VisualStudio编译一个项目时,它并不是每次都从头开始编译,而是做一些聪明的事情,只重新编译已更改的部分。Roslyn有什么方法可以做到这一点吗?我可能错了,因为我不确定Roslyn的情况,但您可以将Roslyn代码分离到另一个解决方案中,并为您自己的代码提供一个单独的解决方案 在这之后,您可以简单地构建随时变化的解决方案 我可能错了,

我正在我的一个C#项目中使用Roslyn生成一些代码。目前Roslyn将接管整个项目,从头开始编译,然后写出我想要的代码。这需要完全重新编译,这有点慢。当VisualStudio编译一个项目时,它并不是每次都从头开始编译,而是做一些聪明的事情,只重新编译已更改的部分。Roslyn有什么方法可以做到这一点吗?

我可能错了,因为我不确定Roslyn的情况,但您可以将Roslyn代码分离到另一个解决方案中,并为您自己的代码提供一个单独的解决方案


在这之后,您可以简单地构建随时变化的解决方案

我可能错了,因为我不确定Roslyn的情况,但是您可以将Roslyn代码分离到另一个解决方案中,并为您自己的代码提供一个单独的解决方案


在这之后,您可以简单地构建随时变化的解决方案

VisualStudio(在即将发布的版本中)使用Roslyn编译代码(到IL)。对于一个不是增量的、从来没有增量的项目。

Visual Studio(在即将发布的版本中)使用Roslyn编译代码(到IL)。“增量构建”是您要寻找的术语。C#从未支持增量构建。您错过了一些关键信息。VisualStudio本身并不智能,但依赖MSBuild引擎查看哪些项目已经是最新的。这一部分也不在Roslyn中。“增量构建”是您正在寻找的术语。C#从未支持增量构建。您错过了一些关键信息。VisualStudio本身并不智能,但依赖MSBuild引擎查看哪些项目已经是最新的。这部分也不在Roslyn中。我知道Roslyn被即将到来的VS使用。我不知道VS不进行增量编译。现在我很好奇,为什么根据我的经验,“干净”的重新构建要比常规构建花费更长的时间。可能是因为我正在处理大量必须重新复制到输出目录的映像资产。当MSBuild执行重建时,如果我们看到生成的结果是最新的,我们将尝试通过通常的时间戳检查生成文件来避免重建项目。但一旦修改了一个文件,我们就重建整个项目,以及它的所有下游依赖项。我知道即将到来的VS使用了Roslyn。我不知道VS不进行增量编译。现在我很好奇,为什么根据我的经验,“干净”的重新构建要比常规构建花费更长的时间。可能是因为我正在处理大量必须重新复制到输出目录的映像资产。当MSBuild执行重建时,如果我们看到生成的结果是最新的,我们将尝试通过通常的时间戳检查生成文件来避免重建项目。但一旦文件被修改,我们将重建整个项目及其所有下游依赖项。