太坑了,这个环境配置了一个星期,折磨的不行,不知道接下去还有多少坑,长路漫漫无休矣
错误:
IOException: Win32 IO returned 234. Path: C:\Program Files (x86)\Windows Kits\10\References\10.0.18362.0\Windows.ApplicationModel.CommunicationBlocking.CommunicationBlockingContract\2.0.0.0\Windows.ApplicationModel.CommunicationBlocking.CommunicationBlockingContract.winmd" or "Temp\StagingArea\Data\Managed\Windows.ApplicationModel.CommunicationBlocking.CommunicationBlockingContract.winmd
System.IO.File.Copy (System.String sourceFileName, System.String destFileName, System.Boolean overwrite) (at <599589bf4ce248909b8a14cbe4a2034e>:0)
PostProcessWinRT.CopyFrameworkAssemblies () (at C:/buildslave/unity/build/PlatformDependent/MetroPlayer/Extensions/Managed/PostProcessWinRT.cs:1823)
PostProcessWinRT.Process () (at C:/buildslave/unity/build/PlatformDependent/MetroPlayer/Extensions/Managed/PostProcessWinRT.cs:164)
UnityEditor.UWP.BuildPostprocessor.PostProcess (UnityEditor.Modules.BuildPostProcessArgs args) (at C:/buildslave/unity/build/PlatformDependent/MetroPlayer/Extensions/Managed/ExtensionModule.cs:91)
Rethrow as BuildFailedException: Exception of type 'UnityEditor.Build.BuildFailedException' was thrown.
UnityEditor.UWP.BuildPostprocessor.PostProcess (UnityEditor.Modules.BuildPostProcessArgs args) (at C:/buildslave/unity/build/PlatformDependent/MetroPlayer/Extensions/Managed/ExtensionModule.cs:95)
UnityEditor.Modules.DefaultBuildPostprocessor.PostProcess (UnityEditor.Modules.BuildPostProcessArgs args, UnityEditor.BuildProperties& outProperties) (at D:/unity/Editor/Mono/Modules/DefaultBuildPostprocessor.cs:27)
UnityEditor.PostprocessBuildPlayer.Postprocess (UnityEditor.BuildTargetGroup targetGroup, UnityEditor.BuildTarget target, System.String installPath, System.String companyName, System.String productName, System.Int32 width, System.Int32 height, UnityEditor.BuildOptions options, UnityEditor.RuntimeClassRegistry usedClassRegistry, UnityEditor.Build.Reporting.BuildReport report) (at D:/unity/Editor/Mono/BuildPipeline/PostprocessBuildPlayer.cs:281)
UnityEngine.GUIUtility:ProcessEvent(Int32, IntPtr) (at D:/unity/Modules/IMGUI/GUIUtility.cs:179)
原因:
下载好的Win10 SDK中的一个文件名太长了,超出了Unity程序设定的字节导出范围。如果先安装VS,再安装Windows SDK会发现Windows SDK的文件会默认在C:\Program Files (x86)\Windows Kits下,且不可修改。
解决方法:
网上千篇一律的说了下面这两种方法,确实这两个方法都可以解决Unity Switch Platform to UWP build出现的问题,能够成功生成文件,但这种方法在VS生成的时候依旧会报错,并不能解决实质性的问题(有人确实也可以编译成功,不知道为什么,反正我是不行)。
1、报错路径:C:\Program Files (x86)\Windows Kits\10\References\10.0.18362.0
\Windows.ApplicationModel.CommunicationBlocking.CommunicationBlockingContract,修改Windows.ApplicationModel.CommunicationBlocking.CommunicationBlockingContract的文件名为a,或不带中文的字母和数字都可以。
2、报错路径:C:\Program Files (x86)\Windows Kits\10\References\10.0.18362.0
\Windows.ApplicationModel.CommunicationBlocking.CommunicationBlockingContract,删除Windows.ApplicationModel.CommunicationBlocking.CommunicationBlockingContract文件夹里面的Windows.ApplicationModel.CommunicationBlocking.CommunicationBlockingContract.winmd文件
真正解决方法:
1、先安装Windows SDK,我安装的版本是:https://developer.microsoft.com/zh-cn/windows/downloads/windows-10-sdk/,注意安装路径不要选择默认路径C:\Program Files (x86)\;但之后安装VS勾选通用windows平台开发时会包含win10 SDK,所以电脑上会出现两个SDK的版本,这个没关系;
2、再安装VS2019;
3、安装Unity,我安装的版本是:Unity 2019.3.15f1;
最后在VS生成的时候又报了一个错误:MSB3774:找不到WindowsMobile SDK not found version=10.0.19041.0(解决方法参考https://blog.csdn.net/qq_41905133/article/details/88983431)
只要将刚刚安装好的Windows kits下的文件复制一份到C:\Program Files (x86)\Windows Kits\下就编译成功了,这一步我也不知道为什么,反正到这一步是没有报错了。