.NET Core和.NET Standard项目不进行增量构建

时间:2017-02-06 17:46:46

标签: c# .net asp.net-core

我在桌面解决方案中使用.NET标准库,因此我可以在桌面和Web解决方案之间共享这些库。但是,我现在看到增量构建问题。有没有其他人经历过这个或设法修复它?

我可以看到.NET标准库有一些增量构建功能,如果我使用" dotnet build"在命令行上构建它们。例如,它需要1秒钟然后如果我在该库中进行代码更改并再次运行则需要2秒钟。如果我第三次跑步,这可以追溯到1秒。

但是,在纯.NET框架应用程序(如控制台应用程序或wpf应用程序)中,传统上如果不进行代码更改,那么在visual studio中它甚至不会尝试构建项目。它简单地说" 1是最新的"。我看到.NET标准库总是被重新复制到输出目录,它们也会导致我的整个WPF项目每次都重建。一段时间后,如果每次代码更改需要5秒钟来构建,这会开始变得烦人!

1 个答案:

答案 0 :(得分:0)

我至少可以为您提供部分答案。微软将每次复制二进制文件的问题解释为本质上是there is no support, update to a later target framework version

  

在这一点上,我们不对工具随附的compat垫片进行任何智能修整,因此最终将它们全部复制。如果您(或您的依赖项)不依赖它们,可以安全地删除/不部署它们,但是盲目地这样做可能会破坏您的某些依赖项。

这应该在4.7.1中解决

  

值得一提的是,使用.NET Framework 4.7.1及更高版本,您无需为.NET Standard部署任何其他文件。今天,如果您将目标定位为Xamarin或.NET Core,情况就是这样。

至于为什么总是复制,而不是有选择地复制,我不确定。我已经搜索过构建日志,并且我相信这些文件没有正确地添加到构建目标的输出列表中,但是很难诊断。 Visual Studio还具有完全避免调用MSBuild的聪明方法,因此MSBuild脚本中跳过目标的逻辑甚至不必运行。 Visual Studio主要是一个黑匣子,但是基于您和我所观察到的行为,我怀疑这种逻辑也被打破了。

这是一个令人沮丧的问题,因为仍然有充分的理由针对旧版本的.NET Framework,例如,如果将库分发给了可能使用Visual Studio 2013对其进行构建的客户,并且无法对其进行更新。