C# 在UWP中加速编译?
在WPF中工作了很长时间后,我正在研究UWP,编译速度非常慢 我理解为什么版本编译很慢(net本机编译),但在调试中禁用了它,但在F5和屏幕上显示的应用程序之间仍然需要很多时间,即使对于空白应用程序也是如此 是否有任何方法可以加快速度(即使以运行时性能为代价)?当你习惯于C语言时,这真的很难处理,因为C语言在每一个小的变化后都会给你极快的编译时间和测试 例如,只需在一个非常简单的(4个页面,每个<200行xaml,几乎0个C#)uwp项目上单击鼠标右键并重新构建,调试几乎只需20秒(没有.net本机),没有项目引用。同时,一个更大的WPF应用程序(几十个窗口,虽然有几行代码)需要几秒钟,而大部分时间是复制子项目 正如建议的那样,您可以在此处找到一个可供下载的最小示例:C# 在UWP中加速编译?,c#,.net,visual-studio,uwp,C#,.net,Visual Studio,Uwp,在WPF中工作了很长时间后,我正在研究UWP,编译速度非常慢 我理解为什么版本编译很慢(net本机编译),但在调试中禁用了它,但在F5和屏幕上显示的应用程序之间仍然需要很多时间,即使对于空白应用程序也是如此 是否有任何方法可以加快速度(即使以运行时性能为代价)?当你习惯于C语言时,这真的很难处理,因为C语言在每一个小的变化后都会给你极快的编译时间和测试 例如,只需在一个非常简单的(4个页面,每个MarkupCompilePass1: >XamlPreCompile: >MarkupCompile
这只是一个带有空白wpf和空白uwp应用程序的解决方案。WPF的编译时间刚刚超过1秒,UWP的编译时间为12秒,在每种情况下,解决方案都被清理,我测试的单个项目被右键单击并重建。这是在调试中(没有.net本机编译)我完全同意UWP编译比WPF慢得多。每当我到达大约5-6打xaml窗口或视图时,我总是必须分解我的WPF程序集,以便将增量编译时间减少到10-20秒。按照目前的情况来看,我的UWP程序集可能只会增长到大约2或3打的项,而不会花太长时间编译。当您尝试进行迭代编码和调试时,任何编译时间超过10秒的程序集都是有问题的 这里有两条建议,如果你还没有尝试过的话。首先要做的是转到build选项卡,并始终记得取消选中“使用.NET本机工具链编译”。对于正常的调试/测试迭代来说,这是非常无用的 接下来要做的事情是使用procmon监视构建操作。这将暴露任何特定于您的工作站的问题(如病毒扫描、其他可能干扰的应用程序) 以下是我注意到的与WPF相比会减慢UWP编译速度的因素:
- 大量编译过程(请在“生成输出”窗口中查看):
- 核心/Nuget依赖项
- 没有用于优化的“共享输出目录”李>
- UWP中需要新的“部署”步骤
- UWP仍在积极变化(与WPF不同)
100 ms ValidateAppxManifest 1 calls
400 ms ExpandPriContent 1 calls
400 ms Csc 2 calls
600 ms ResolveAssemblyReference 1 calls
7000 ms CompileXaml 2 calls
15063 (creators update) [4 seconds]
16299 (fall creators) [7 seconds]
17134 (version 1803) [ 7.5 seconds]