【问题标题】:Unity5 project does not build for PC Standalone, on Windows with external Visual Studio version (2017)Unity5 项目不适用于 PC Standalone,在具有外部 Visual Studio 版本 (2017) 的 Windows 上构建
【发布时间】:2017-04-20 00:10:38
【问题描述】:

虽然它只是与编程远程相关,但它是这样的:

自上周以来,我一直在 Win 10 (x64) 上使用 Unity (5.6.0f3 Community x64) - 使用Visual Studio (2017 Community) 作为附加的编辑器,作为 Unity “要求” - 并以 [Unity]: Tutorials 开头(第一个) .几天来一切都很好,但随后为 PC Standalone 目标构建,停止工作。 谷歌并检查论坛,并没有帮助找到有关这种确切行为的信息:

Build Settings 对话框(移至右侧)所示,没有(Target PlatformArchitecture)组合框允许指定构建参数。错误在左侧。

注意事项(关于当前行为):

  • 第一个猜测是教程项目不知何故搞砸了,所以我从头开始创建了一个新项目(一个包含一个 Sphere 并附加了一个 Rigidbody 的虚拟/简单项目和一个 C# 脚本,它根据用户输入施加力),但它的行为相同(这是上图中的项目构建输出)
  • WebGL 构建运行良好(在浏览器中加载);这是目前使用的解决方法,但需要很长时间才能完成
  • 播放(显然)也有效(不用说 VStudio 中的一切都OKcsc 没有抱怨),!!!但是!!!在尝试(但失败)构建后,播放不再起作用(重新加载项目是修复它的唯一方法)

为了排除任何可能的疑问,这里有一个 DownloadAssistant 截图:

所有内容都已检查,有 2 个项目(与本案例不太相关)未显示(因为窗口不大),但已检查(并安装)。 p>

背景信息

  • 第一次安装 Unity 时,计算机上没有 VStudio 2017 版本,因此它(社区版)作为一部分安装Unity 的安装过程(我记得(至少)Assistant 中有一个与 VStudio 相关的组合框)
  • 然后,一个 VStudio 补丁可用了;在准备安装它时,我意识到 VStudio 安装在默认路径上(在 %SYSTEMDRIVE% 上),这对我不起作用,因为它是一个大型产品, 所以:
    • 已卸载
    • 在不同的驱动器上重新安装(直接从[VisualStudio]: Visual Studio Downloads)(是的,我知道更改安装路径后,仍然会在 % 上安装一个相当大的部分,例如 Windows SDK SYSTEMDRIVE%)
    • 由于我认为上述 2 个步骤会破坏 Unity 和新的 VStudio 之间的联系,因此我还重新安装了 Unity。这一次,在 Assistant 中没有与 VStudio 相关的复选框(检查它需要安装的任何软件是否尚未安装似乎很正常1)。后来,我还发现了一个持久的(意味着它在 Unity 卸载时没有被清除)RegValue (HKEY_CURRENT_USER\SOFTWARE\Unity Technologies\Installer\Select_VisualStudio),值为 0(相对于同一键下的一堆其他值,值为 1)李>
  • 之后,我重新安装了 Unity 几次,包括在卸载/安装之间重新启动(不是必需的),但没有结果(我还长期启用 RegVaue 在开始之前Assistant)

一点调试表明,在尝试构建 (PC Standalone) 时,Unity 会执行类似的操作(不要介意路径,这就是它们的运行方式我的机器),可以从 cmdline 复制:

build_win.bat

"E:\Install\x64\Unity\5.6.0f3\Editor\Data\MonoBleedingEdge\bin\mono.exe" "E:\Install\x64\Unity\5.6.0f3\Editor\Data\MonoBleedingEdge\lib\mono\4.5\mcs.exe" "@args-win.txt"

args_win.txt

-debug
-target:library
-nowarn:0169
-langversion:4
-out:Temp/Assembly-CSharp.dll
-unsafe
-optimize
-r:E:/Install/x64/Unity/5.6.0f3/Editor/Data/UnityExtensions/Unity/GUISystem/Standalone/UnityEngine.UI.dll
-r:E:/Install/x64/Unity/5.6.0f3/Editor/Data/UnityExtensions/Unity/Networking/Standalone/UnityEngine.Networking.dll
-r:E:/Install/x64/Unity/5.6.0f3/Editor/Data/UnityExtensions/Unity/UnityAnalytics/UnityEngine.Analytics.dll
-define:UNITY_5_3_OR_NEWER
-define:UNITY_5_4_OR_NEWER
-define:UNITY_5_5_OR_NEWER
-define:UNITY_5_6_OR_NEWER
-define:UNITY_5_6_0
-define:UNITY_5_6
-define:UNITY_5
-define:UNITY_ANALYTICS
-define:ENABLE_AUDIO
-define:ENABLE_CACHING
-define:ENABLE_CLOTH
-define:ENABLE_DUCK_TYPING
-define:ENABLE_GENERICS
-define:ENABLE_PVR_GI
-define:ENABLE_MICROPHONE
-define:ENABLE_MULTIPLE_DISPLAYS
-define:ENABLE_PHYSICS
-define:ENABLE_RUNTIME_NAVMESH_BUILDING
-define:ENABLE_SPRITERENDERER_FLIPPING
-define:ENABLE_SPRITES
-define:ENABLE_TERRAIN
-define:ENABLE_RAKNET
-define:ENABLE_UNET
-define:ENABLE_LZMA
-define:ENABLE_UNITYEVENTS
-define:ENABLE_WEBCAM
-define:ENABLE_WWW
-define:ENABLE_CLOUD_SERVICES_COLLAB
-define:ENABLE_CLOUD_SERVICES_ADS
-define:ENABLE_CLOUD_HUB
-define:ENABLE_CLOUD_PROJECT_ID
-define:ENABLE_CLOUD_SERVICES_UNET
-define:ENABLE_CLOUD_SERVICES_BUILD
-define:ENABLE_CLOUD_LICENSE
-define:ENABLE_EDITOR_METRICS
-define:ENABLE_EDITOR_METRICS_CACHING
-define:ENABLE_NATIVE_ARRAY
-define:INCLUDE_DYNAMIC_GI
-define:INCLUDE_GI
-define:PLATFORM_SUPPORTS_MONO
-define:RENDER_SOFTWARE_CURSOR
-define:INCLUDE_PUBNUB
-define:ENABLE_PLAYMODE_TESTS_RUNNER
-define:ENABLE_SCRIPTING_NEW_CSHARP_COMPILER
-define:ENABLE_VIDEO
-define:UNITY_STANDALONE_WIN
-define:UNITY_STANDALONE
-define:ENABLE_SUBSTANCE
-define:ENABLE_RUNTIME_GI
-define:ENABLE_MOVIES
-define:ENABLE_NETWORK
-define:ENABLE_CRUNCH_TEXTURE_COMPRESSION
-define:ENABLE_UNITYWEBREQUEST
-define:ENABLE_CLOUD_SERVICES
-define:ENABLE_CLOUD_SERVICES_ANALYTICS
-define:ENABLE_CLOUD_SERVICES_PURCHASING
-define:ENABLE_CLOUD_SERVICES_CRASH_REPORTING
-define:ENABLE_EVENT_QUEUE
-define:ENABLE_CLUSTERINPUT
-define:ENABLE_VR
-define:ENABLE_WEBSOCKET_HOST
-define:ENABLE_MONO
-define:NET_2_0_SUBSET
Assets/_Scripts/x.cs
-r:E:\Install\x64\Unity\5.6.0f3\Editor\Data\Mono\lib\mono\unity\System.Runtime.Serialization.dll
-r:E:\Install\x64\Unity\5.6.0f3\Editor\Data\Mono\lib\mono\unity\System.Xml.Linq.dll
-r:E:\Install\x64\Unity\5.6.0f3\Editor\Data\Mono\lib\mono\unity\UnityScript.dll
-r:E:\Install\x64\Unity\5.6.0f3\Editor\Data\Mono\lib\mono\unity\UnityScript.Lang.dll
-r:E:\Install\x64\Unity\5.6.0f3\Editor\Data\Mono\lib\mono\unity\Boo.Lang.dll
-sdk:unity

args_win.txt${PROJECT_ROOT}\Temp\UnityTempFile-* 之一的副本(我将把这样的文件称为utfile),更准确地说是在开始构建时创建的文件。有趣的是,它是由另一个(在项目加载时创建的 10 多个相同文件之一) utfile 通过(没有进行全面检查,也许还有其他行)创建的(并改组(amestecating))一些行。

显而易见的(甚至不必检查源utfile)是:-r:E:/Install/x64/Unity/5.6.0f3/Editor/Data/Managed/UnityEngine.dll,插入到上述文件中,可以完美运行。但我不知道如何指示 Unity 不要剥离它。

其他事实(或多或少相关):

  • 安装了其他几个 VStudio 版本(201020132015)等等VCRedists,但我严重怀疑这是否会有所作为,因为 VStudio 仅用于编辑(例如,在 dblclicking 时由 Unity 启动脚本)
  • 我的电脑也“遭受”[BT]: Has your Windows 10 Start menu stopped working? How to fix it 的困扰(我每周重新启动一次;大约 3-4 天后问题再次出现),但在安装 Unity 之前,这种情况已经发生了数周

可能的解决方案

  • 卸载 UnityVStudio,并恢复原始设置(如果仍然有效) - 不可取
  • 获得答案(在此处或在 Unity 论坛上,我将立即发布相同的问题),并希望能深入了解它
  • 开始痛苦的调试/监控过程([MS.Docs]: Process Monitor (ProcMon) 是一个很好的工具)也可能涉及反汇编UnityDownloadAssistant-5.6.0f3.exe,但不能保证它会产生(有利的)结果。无论如何,我认为之间有一个(暂时隐藏的)链接:
    • VStudio 复选框在 Assistant 中不存在,而 VStudio 已安装
    • 缺少PC Standalone 的构建参数组合框
    • 在构建时剥离 UnityEngine.dll 依赖项
  • 解决此问题的可能工作计划/算法是(仅理论上):
    • 调试Assistant并识别查询VStudio安装状态的资源(注册表值、文件等)
    • 调整该资源以使 Assistant “认为” VStudio 未安装;这将触发 VStudio 安装程序(并使 Assistant “标记”此安装适合 PC Standalone 构建),这将检测到以前的安装(当然在此之前,资源(如果相同)需要取消调整)并且会失败(这里的另一个远景是 Assistant 不检查返回码)
    • Assistant完成,希望一切都会好起来

欢迎提出任何想法。

旁注1(与问题无关):在卸载/安装Unity时,我注意到了;如果它是 Community Edition 特定的,我可以(某种程度上)理解它,但如果不是,那么它就是一个非常la脚的错误/行为:

  • 已安装 Unity(完全如上)
  • 运行 Assistant 并且不要更改之前安装的任何内容(我上面提到的 RegValue 的父 RegKey,确保默认情况下)。它会:
    • 下载(并覆盖 ???)任何子 pkg(例如 UnitySetup-Linux-Support-for-Editor-5.6.0f3.exeFacebookGamesArcade .msi, ...);对我来说大约是 3GB+(即使 文件已经存在
    • 运行每个指定的(“已检查”)pkg / 文件
    • 在安装之前删除 (UnitySetup64.exe) 任何现有安装 (???)

【问题讨论】:

  • 你的脚本顶部有using UnityEngine;吗?
  • @Daco18s 当然。该脚本在语法上是正确的,否则它不会播放/构建,并且会在 VStudio 中显示为“红色”。
  • 只是检查一下,因为这是首先想到的。很奇怪。

标签: c# unity3d mono


【解决方案1】:

该问题似乎是在添加 Facebook Gameroom 构建支持时引入的,截至 2017.3.1f 尚未修复。

解决方法:

  1. 转到Unity 文件夹(Windows x64 上为C:\Program Files\Unity
  2. Unity/Editor/Data/PlaybackEngines/Facebook 移动到Unity 文件夹,这样现在您就有了EditorFacebook 并排在一起

@jura_z 在 https://forum.unity.com/threads/installing-facebook-gameroom-build-support-gives-loads-of-errors-when-building-to-windows-standalone.489495/

【讨论】:

    【解决方案2】:

    说来话长

    显然,没有简单的修复方法(或者至少我找不到任何方法),所以我开始了卸载/重新安装 Unity 的“极具挑战性”的过程 em> 和 VStudio(卸载后重新启动 - 以确保没有“隐藏”操作挂起)。

    我首先通过指定自定义下载路径来查看 Assistant 在后台做了什么,如下图所示:

    注意安装路径与问题中的路径略有不同,因为我更改了它们(因为我必须重新安装产品为什么不使用一些是什么?),但这些变化并不相关。

    在指定的文件夹中有一堆(~3GB+)下载的文件(可执行文件)和一个 batch 脚本,它是命令行等价于 em>助理

    install.bat

    REM Run this script to automatically install or reinstall all packages,
    REM as it's performed by the Unity Download Assistant.
    REM Needs to be run with superuser permissions.
    
    "UnitySetup64.exe" -UI=reduced /D=e:\Install\x64\Unity\Community\5.6.0f3
    "UnityDocumentationSetup.exe" /S /D=e:\Install\x64\Unity\Community\5.6.0f3
    "UnityStandardAssetsSetup.exe" /S /D=e:\Install\x64\Unity\Community\5.6.0f3
    "UnityExampleProjectSetup.exe" /S
    "vs_Community.exe" --productId "Microsoft.VisualStudio.Product.Community" --add "Microsoft.VisualStudio.Workload.ManagedGame" --campaign "Unity3d_Unity" --passive
    msiexec.exe /i "FacebookGamesArcade.msi" /qr LAUNCHEXE=FALSE
    "UnitySetup-Android-Support-for-Editor-5.6.0f3.exe" /S /D=e:\Install\x64\Unity\Community\5.6.0f3
    "UnitySetup-iOS-Support-for-Editor-5.6.0f3.exe" /S /D=e:\Install\x64\Unity\Community\5.6.0f3
    "UnitySetup-AppleTV-Support-for-Editor-5.6.0f3.exe" /S /D=e:\Install\x64\Unity\Community\5.6.0f3
    "UnitySetup-Linux-Support-for-Editor-5.6.0f3.exe" /S /D=e:\Install\x64\Unity\Community\5.6.0f3
    "UnitySetup-Mac-Support-for-Editor-5.6.0f3.exe" /S /D=e:\Install\x64\Unity\Community\5.6.0f3
    "UnitySetup-Metro-Support-for-Editor-5.6.0f3.exe" /S /D=e:\Install\x64\Unity\Community\5.6.0f3
    "UnitySetup-UWP-IL2CPP-Support-for-Editor-5.6.0f3.exe" /S /D=e:\Install\x64\Unity\Community\5.6.0f3
    "UnitySetup-Samsung-TV-Support-for-Editor-5.6.0f3.exe" /S /D=e:\Install\x64\Unity\Community\5.6.0f3
    "UnitySetup-Tizen-Support-for-Editor-5.6.0f3.exe" /S /D=e:\Install\x64\Unity\Community\5.6.0f3
    "UnitySetup-WebGL-Support-for-Editor-5.6.0f3.exe" /S /D=e:\Install\x64\Unity\Community\5.6.0f3
    "UnitySetup-Facebook-Games-Support-for-Editor-5.6.0f3.exe" /S /D=e:\Install\x64\Unity\Community\5.6.0f3
    

    引起我注意的是与VStudio相关的一个:

    "vs_Community.exe" --productId "Microsoft.VisualStudio.Product.Community" --add "Microsoft.VisualStudio.Workload.ManagedGame" --campaign "Unity3d_Unity" --passive
    

    由于(某些)启动器参数对我来说没什么意义,所以我查了一下:[MS.Docs]: Use command-line parameters to install Visual Studio 2017。所以,我通过命令行启动了它(没有--passive 有机会查看选择了哪些功能),我想我已经明白了:Game development with Unity 被选择为下图(之前,当我“正常”安装 VStudio 时,我没有选中那个框):

    但是行为是一样的 !!!

    注意事项

    • 如果您选择安装此选项(并且还自己安装 Unity),请务必取消选中 Unity 编辑器,以避免安装两次
    • 我后来发现(当然是通过重新安装),选中/取消选中 使用 Unity 进行游戏开发绝对没有影响
    • 另外,VStudio 没有安装在它的默认路径上(在某些时候我变得偏执,并认为可能有一些 VStudio 硬编码路径在 Unity 文件)不是原因

    我所做的下一步是重新创建初始场景(它曾经工作的地方):

    • 使用“我的”初始选项安装 VStudio(例如,Game development with Unity 未选中)
    • 使用默认选项安装 Unity - 在安装之前删除其 RegKey(我在问题中提到的)

    并且成功了 !!!

    然后我知道其中一个 Unity 组件正在搞乱我的设置,所以在基本安装之上(install.bat 的内容直到 vs_Community.exe)我开始一一安装所有其他选项,并在每个组件安装后检查我是否能够进行 PC Standalone 构建,然后...

    短篇小说

    事实证明,Facebook Gameroom Build Support(如 Assistant 中所示)是我所有问题的根源。因此,另一个干净安装(VStudio 和)Unity没有 Facebook 构建支持)就像一个魅力。

    现在,调查只完成了一半,我还需要找出为什么会发生这种情况,但我将就此打住。如果将来我需要为 Facebook 构建,那么我必须弄清楚它并让它工作,但现在我不会。
    请注意,出于我(笨拙)的目的,独立PC,因为目前我在 Win)构建就足够了(也许WebGL 以及从浏览器测试),但我安装了所有其他的,以防我想玩它们。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2018-06-02
      • 2023-04-06
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-02-01
      • 2017-10-03
      相关资源
      最近更新 更多