web-dev-qa-db-fra.com

Le projet Unity5 n'est pas construit pour PC autonome, sous Windows avec une version externe de Visual Studio (2017)

Bien que ce soit uniquement lié à la programmation, voici ce qui suit:

Depuis la semaine dernière, je joue avec Unity (5.6.0f3 Communauté x64) sur Win 10 (x64) - avec Visual Studio (2017 Communauté). en tant qu'éditeur attaché, comme Unity "requiert" - et a démarré avec le [Unity]: Tutorials (premier d'entre eux). Pendant quelques jours, tout s'est très bien passé, mais ensuite, la construction de PC Standalone target, cesse de fonctionner. Google et vérifie les forums, n'aide pas à trouver des informations sur ce comportement exact:

PC Standalone build

Comme on le voit dans la boîte de dialogue Build Settings (déplacée vers la droite), il n'y a pas de liste déroulante (Target Platform ou Architecture) permettant de spécifier des paramètres de construction. Les erreurs sont sur le côté gauche.

Notes (à propos du comportement actuel):

  • La première hypothèse était que le projet de didacticiel était en quelque sorte foiré. J'ai donc créé un nouveau projet (un modèle factice/simple contenant une Sphere ayant joint un script Rigidbody et un script C # qui applique des forces basées sur les entrées de l'utilisateur), mais il se comporte de la même manière (il s'agit de la sortie du projet dans l'image ci-dessus)
  • WebGL build fonctionne correctement (charge dans le navigateur); c'est la solution de contournement actuellement utilisée, mais cela prend du temps à compléter
  • Jouer (évidemment) fonctionne également (inutile de dire que les choses sont OK dans VStudio, aucune plainte de csc), !!! mais !! ! après avoir essayé (et échoué) de construire, Play ing ne fonctionne plus (recharger le projet est le seul moyen de le réparer)

Pour écarter tout doute, voici une capture d’écran DownloadAssistant:

Download Assistant

Tout est vérifié, il y a 2 éléments (qui ne sont pas très pertinents dans ce cas) qui ne s'affichent pas (car la fenêtre n'est pas assez grande), mais ils sont cochés (et installé).

Informations de fond:

  • Lors de la première installation de Unity, aucune version de VStudio 2017 n'était présente sur l'ordinateur. Il a donc été installé (Community Edition) dans le cadre du processus d'installation de Unity (je me souviens ( au moins) une liste déroulante associée à VStudio dans Assistant)
  • Ensuite, un correctif VStudio était disponible; lors de la préparation de l’installation, j’ai réalisé que VStudio était installé sur le chemin par défaut (sur % SYSTEMDRIVE%), ce qui ne fonctionne pas pour moi car c’est un produit volumineux, donc:
    • Désinstallé
    • Je l'ai réinstallé (directement à partir de [VisualStudio]: Téléchargements Visual Studio ) sur un lecteur différent (et oui, je suis conscient du fait que la modification du chemin d'installation installe toujours une très grosse partie comme SDK Windows sur % SYSTEMDRIVE%)
    • Comme je pensais que les 2 étapes ci-dessus rompraient le lien entre Unity et le nouveau VStudio, j'ai également réinstallé Unity. Cette fois, il n'y avait pas de cases à cocher associées à VStudio dans Assistant (il est normal de vérifier si un logiciel qu'il doit installer est déjà installé) 1). Plus tard, j'ai également trouvé un persistant (signifiant qu'il n'est pas effacé à la désinstallation de Unity) RegValue (HKEY_CURRENT_USER\LOGICIEL\Unity Technologies\Installer\Select_VisualStudio) avec la valeur (par opposition à un tas d'autres valeurs sous la même clé avec des valeurs de 1)
  • Après cela, j’ai réinstallé plusieurs fois Unity, y compris des redémarrages (non requis) entre la désinstallation/l’installation, mais aucun résultat (j’ai également tenté d’activer le RegVaue ci-dessus avant de lancer Assistant. )

Un peu de débogage a révélé que lorsque vous essayez de construire (PC Standalone), Unity fait quelque chose comme ceci (ne vous occupez pas des chemins, c'est comme ça sur ma machine), cela peut être reproduit à partir de 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 est une copie de l'un des $ {PROJECT_ROOT}\Temp\UnityTempFile- * s (je vais faire référence à un tel fichier comme utfile), plus précisément. de celui qui est créé lors du démarrage de la construction. Ce qui est génial, c’est qu’il a été créé à partir d’un autre (un des 10+ identiques créés au moment du chargement du projet) utfile par (n’a pas fait de vérification approfondie, peut-être qu’il y a aussi des lignes supplémentaires) striping (et shuffling ( amestecating)) quelques lignes.

La plus évidente (ne même pas avoir à vérifier la source utfile) est: -r:E:/Install/x64/Unity/5.6.0f3/Editor/Data/Managed/UnityEngine.dll, inséré dans le fichier ci-dessus, fonctionne parfaitement. Mais je ne sais pas comment demander à Unity de ne pas le décaper.

Autres faits (plus ou moins pertinents):

  • Plusieurs autres versions de VStudio sont installées (2010, 2013, 2015) et davantage de VCRedist, mais je doute sérieusement que cela rendrait une différence, puisque VStudio est uniquement utilisé pour l'édition (par exemple, lancé par Unity lorsque vous cliquez sur un script)
  • Mon ordinateur "souffre" également de [BT]: votre menu Démarrer de Windows 10 ne fonctionne-t-il plus? Comment résoudre ce problème (je le redémarre environ une fois par semaine; après environ 3 à 4 jours, le problème réapparaît). se passe des semaines avant d'installer Unity

Solutions possibles:

  • Désinstallez Unity et VStudio et restaurez la configuration d'origine (si elle fonctionne toujours) - non souhaitable
  • Obtenez une réponse (ici ou sur les forums Unity, où je poserai la même question tout de suite), et j'espère aller au fond des choses
  • Démarrez le processus pénible de débogage/surveillance ( [MS.Docs]: Process Monitor (ProcMon) est un excellent outil) peut également impliquer le désassemblage de UnityDownloadAssistant-5.6.0f3.exe, mais rien ne garantit que cela produirait un résultat (favorable). Quoi qu'il en soit, je pense qu'il existe un lien (caché pour l'instant) entre:
    • La case à cocher VStudio n'est pas présente dans Assistant, lorsque VStudio est déjà installé
    • Absence des zones de liste déroulante des paramètres de construction pour PC Standalone
    • Suppression de la dépendance UnityEngine.dll lors de la construction
  • Un plan de travail/algorithme possible pour résoudre ce problème serait (juste de la théorie):
    • Débogage de Assistant et identification de la ressource (valeur de registre, fichier, ...) interrogée pour l'état d'installation de VStudio
    • Ajustez cette ressource pour que Assistant "pense" que VStudio n'est pas installé; cela déclencherait le programme d’installation VStudio (et indiquerait également à Assistant "que cette installation convenait aux versions de PC Standalone), ce qui détecterait une installation antérieure (bien la ressource (si elle est identique) doit être conservée) et échouera (une autre tentative serait ici que Assistant ne vérifie pas les codes de retour)
    • Laissez Assistant terminer et j'espère que tout ira bien

Toutes les idées sont les bienvenues.

Note latérale 1 (pas lié à la question): Lors de la désinstallation/installation de Unity, j'ai remarqué; Si Community Edition est spécifique, je peux (en quelque sorte) le comprendre, mais sinon, il s'agit d'un bogue/comportement assez nul:

  • Avez-Unity installé (complètement comme ci-dessus)
  • Exécutez le Assistant et ne changez rien à l’installation précédente (le parent RegKey du RegValue que j’ai mentionné ci-dessus s’assure de cela par défaut). Ce sera:
    • Téléchargez (et écrasez ???) les sous-ensembles (par exemple, UnitySetup-Linux-Support-for-Editor-5.6.0f3.exe, FacebookGamesArcade.msi, ...); pour moi c'était ~ 3GB + (même si les fichiers étaient déjà là)
    • Exécuter chaque pkg/fichier spécifié ("coché")
    • Supprimer (UnitySetup64.exe) toute installation existante avant d’installer (???)
3
CristiFati

Le problème semble être apparu lors de l’ajout du support à la création de Facebook Gameroom et n’a pas encore été résolu à partir de 2017.3.1f.

Solution de contournement:

  1. Accédez au dossier Unity (C:\Program Files\Unity sous Windows x64)
  2. Déplacez Unity/Editor/Data/PlaybackEngines/Facebook dans le dossier Unity pour que vous ayez maintenant Editor et Facebook l'un à côté de l'autre

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

1
angularsen