it-swarm.com.de

Unity5-Projekt kann nicht für PC Standalone unter Windows mit externer Visual Studio-Version (2017) erstellt werden

Obwohl es sich nur aus der Ferne auf die Programmierung bezieht, geht es hier:

Seit letzter Woche spiele ich mit Unity (5.6.0f3 Community x64) on Win 10 (x64) - Verwenden von Visual Studio (2017 Community) als angehängten Editor, als Unity "erfordert" - und begann mit [Unity]: Tutorials (zuerst). Für ein paar Tage lief alles gut, aber dann funktionierte das Bauen für PC Standalone nicht mehr. Google Das Durchsuchen und Überprüfen der Foren hat nicht dazu beigetragen, Informationen zu diesem genauen Verhalten zu finden:

PC Standalone build

Wie im Dialogfeld Build Settings (nach rechts verschoben) zu sehen ist, gibt es kein ( Target Platform oder ) + Architektur ) Kombinationsfelder, mit denen Build-Parameter angegeben werden können. Fehler sind auf der linken Seite.

Anmerkungen (zum aktuellen Verhalten):

  • Die erste Vermutung war, dass das Tutorial-Projekt irgendwie durcheinander geraten ist, also habe ich ein neues von Grund auf neu erstellt (ein Dummy/einfaches mit einem Sphere und einem ) Rigidbody und ein C # Skript, das Kräfte basierend auf Benutzereingaben anwendet), aber es verhält sich genauso (dies ist die Projekterstellungsausgabe im obigen Bild)
  • WebGL Build läuft einwandfrei (wird im Browser geladen); Dies ist die derzeit verwendete Problemumgehung, deren Ausführung jedoch einige Zeit in Anspruch nimmt
  • Play ing (offensichtlich) funktioniert auch (natürlich sind die Dinge OK in VStudio =), keine Beschwerden von csc ), !!! aber !!! nach dem Versuch (und Misserfolg) zu bauen, Play funktioniert nicht mehr (nur durch erneutes Laden des Projekts kann das Problem behoben werden)

Um mögliche Zweifel auszuschließen, hier ein DownloadAssistant Screenshot:

Download Assistant

Alles ist markiert, es gibt 2 Punkte (die für diesen Fall nicht sehr relevant sind), die nicht angezeigt werden (da das Fenster nicht groß genug ist), aber markiert sind (und installiert).

Hintergrundinfo:

  • Bei der Erstinstallation von Unity war keine VStudio 2017 Version auf dem Computer vorhanden, sodass es ( Community) Edition ) wurde als Teil des Unity Installationsprozesses installiert (ich erinnere mich an (mindestens) einen VStudio verwandten Prozess Kombinationsfeld im Assistent )
  • Dann war ein VStudio Patch verfügbar; Als ich mich auf die Installation vorbereitete, stellte ich fest, dass VStudio im Standardpfad installiert wurde (on % SYSTEMDRIVE% ). Das funktioniert bei mir nicht, da es sich um ein großes Produkt handelt, also:
    • Deinstalliert es
    • Neu installiert (direkt von [VisualStudio]: Visual Studio Downloads ) auf einem anderen Laufwerk (und ja, ich bin mir bewusst, dass das Ändern des Installationspfads immer noch einen ziemlich großen Teil wie ) installiert Windows SDK on % SYSTEMDRIVE% )
    • Da ich dachte, dass die obigen 2 Schritte die Verbindung zwischen Unity und dem neuen VStudio aufheben würden, habe ich Unity . Dieses Mal gab es keine VStudio zugehörigen Kontrollkästchen in den Assistant (scheint normal zu sein, zu prüfen, ob eine Software diese enthält muss installiert werden, ist noch nicht installiert 1). Später fand ich auch eine dauerhafte (was bedeutet, dass es nicht um Unity Deinstallationszeit gelöscht wird) RegValue ( HKEY_CURRENT_USER\SOFTWARE\Unity Technologies\Installer\Select_VisualStudio ) mit einem Wert von 0 (im Gegensatz zu einigen andere Werte unter demselben Schlüssel mit Werten von 1 )
  • Danach habe ich Unity mehrere Male neu installiert, einschließlich Neustarts (nicht erforderlich) zwischen Deinstallation/Installation, aber ohne Ergebnis (ich habe auch einen langen Versuch unternommen, ) zu aktivieren + RegVaue oben vor dem Start Assistant )

Ein kleines Debugging hat ergeben, dass bei dem Versuch, ( PC Standalone ) zu erstellen, Unity so etwas passiert (beachten Sie nicht die Pfade) , so sind sie auf meinem Rechner), das kann reproduziert werden von 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 ist eine Kopie von $ {PROJECT_ROOT}\Temp\UnityTempFile - * s (Ich gehe Um auf eine solche Datei wie utfile ) zu verweisen, genauer auf die Datei, die beim Starten des Builds erstellt wird. Das Tolle ist, dass es aus einem anderen erstellt wurde (eines der 10+ identischen, die zum Zeitpunkt des Ladens des Projekts erstellt wurden) utfile by (hat keine Durchgangsprüfung durchgeführt, möglicherweise gibt es zusätzliche Zeilen auch) einige Zeilen streifen (und mischen ( amestecating )).

Das offensichtliche Problem (Sie müssen nicht einmal die Quelle überprüfen utfile ) ist: -r:E:/Install/x64/Unity/5.6.0f3/Editor/Data/Managed/UnityEngine.dll, der in die obige Datei eingefügt wurde, funktioniert einwandfrei. Aber ich weiß nicht, wie ich Unity anweisen soll, es nicht zu entfernen.

Other facts (mehr oder weniger relevant):

  • Es sind mehrere andere VStudio Versionen installiert ( 2010 , 2013 , 2015 ) und weitere VCRedist , aber ich bezweifle ernsthaft, dass dies einen Unterschied bewirken würde, da ) VStudio wird nur zum Bearbeiten verwendet (z. B. gestartet von Unity , wenn ein Skript angeklickt wird)
  • Mein Computer "leidet" auch unter [BT]: Funktioniert das Windows 10-Startmenü nicht mehr? Wie kann ich das Problem beheben? (Ich starte es ~ einmal pro Woche neu; nach ~ 3-4 Tagen tritt das Problem erneut auf.) Dies geschieht jedoch wochenlang, bevor Unity installiert wird

Mögliche Lösungen:

  • Deinstallieren Sie Unity und VStudio und stellen Sie das ursprüngliche Setup wieder her (falls es noch funktioniert) - nicht wünschenswert
  • Erhalten Sie eine Antwort (hier oder in Unity Foren, in denen ich die gleiche Frage gleich posten werde) und gehen Sie hoffentlich der Sache auf den Grund
  • Starten Sie den schmerzhaften Prozess des Debuggens/Überwachens ( [MS.Docs]: Process Monitor ( ProcMon ) ist ebenfalls ein hervorragendes Werkzeug), möglicherweise müssen Sie = zerlegen UnityDownloadAssistant-5.6.0f3.exe , aber es gibt keine Garantie, dass es zu einem (günstigen) Ergebnis führen würde. Wie auch immer, ich denke, es gibt eine (vorerst verborgene) Verbindung zwischen:
    • VStudio Kontrollkästchen in Assistant nicht vorhanden, wenn VStudio bereits installiert ist
    • Fehlende Kombinationsfelder für Build-Parameter für PC Standalone
    • Entfernen der UnityEngine.dll Abhängigkeit beim Erstellen
  • Ein möglicher Arbeitsplan/Algorithmus zur Behebung dieses Problems wäre (nur Theorie):
    • Debuggen des Assistant und Identifizieren der Ressource (Registrierungswert, Datei, ...), die nach dem VStudio Installationsstatus abgefragt wurde
    • Optimieren Sie diese Ressource, um Assistant "zu denken", dass VStudio nicht installiert ist; das würde das VStudio Installationsprogramm auslösen (und auch Assistant "markieren", dass diese Installation für ) geeignet ist PC Standalone builds), das eine vorherige Installation erkennt (natürlich muss vorher die Ressource (falls dieselbe) entschwächt werden) und ausfällt (ein weiterer langer Schuss hier wäre das Assistant prüft nicht die Rückgabewerte)
    • Lassen Sie Assistant beenden und hoffentlich wird alles gut

Irgendwelche Ideen sind willkommen.

Randnotiz 1 (nicht mit Frage verbunden): Während der Deinstallation/Installation von Unity ist mir smth aufgefallen; wenn es Community Edition spezifisch ist, kann ich es (irgendwie) verstehen, aber wenn nicht, dann ist es ein ziemlich lame Fehler/Verhalten:

  • Habe Unity installiert (vollständig wie oben)
  • Führen Sie den - Assistenten aus und ändern Sie nichts von der vorherigen Installation (der übergeordnete RegKey des RegValue =) dass ich oben erwähnt habe, stellt dies standardmäßig sicher). Es wird:
    • Laden Sie ein beliebiges Unterpaket herunter (und überschreiben ???) (z. B. UnitySetup-Linux-Support-für-Editor-5.6.0f3.exe , FacebookGamesArcade.msi , ...); für mich waren es ~ 3GB + (auch wenn die files schon da waren)
    • Führen Sie jede angegebene ("überprüfte") pkg/Datei aus
    • Entfernen Sie ( UnitySetup64.exe ) alle vorhandenen Installationen, bevor Sie (???) installieren.
3
CristiFati

Lange Geschichte

Anscheinend gab es keine einfache Lösung (oder zumindest konnte ich keine finden), also habe ich den "extrem herausfordernden" Prozess des Deinstallierens/Neuinstallierens Unity und VStudio (mit Neustart nach der Deinstallation - um sicherzustellen, dass keine "versteckten" Vorgänge hängen bleiben).

Zuerst habe ich mir angesehen, was der Assistent unter der Haube tut, indem ich einen benutzerdefinierten Downloadpfad wie im folgenden Bild angegeben habe:

Assistant custom paths

Hinweis : Die Installationspfade unterscheiden sich ein wenig von denen in der Frage weil ich sie geändert habe (da ich die Produkte neu installieren musste, warum sollte ich sie nicht verwenden?), aber diese Änderungen sind nicht relevant.

Im angegebenen Ordner befanden sich einige ~ 3 GB +) heruntergeladene Dateien (ausführbare Dateien) und ein Batch-Skript Das Befehlszeilenäquivalent des Assistenten .

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

Das, was mir aufgefallen ist, war das VStudio verwandte:

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

Da (einige) der Launcher-Argumente mir nicht viel sagten, habe ich sie nachgeschlagen: [MS.Docs]: Verwenden Sie Befehlszeilenparameter, um Visual Studio 2017 zu installieren . Also habe ich es über die Kommandozeile gestartet (ohne --passive, um zu sehen, welche Funktionen ausgewählt wurden), und ich dachte, ich habe es: Die Spieleentwicklung mit Unity wurde wie im Bild unten ausgewählt (vorher Als ich VStudio "normal" installiert habe, habe ich dieses Kontrollkästchen nicht aktiviert :

Unity selection

Aber das Verhalten war das gleiche !!!

Anmerkungen :

  • Wenn Sie diese Option installieren (und auch Unity selbst installieren), müssen Sie das Kontrollkästchen Unity-Editor deaktivieren, um eine Installation zu vermeiden zweimal
  • Wie ich später herausfand (natürlich durch Neuinstallation), hat das Aktivieren/Deaktivieren von Spieleentwicklung mit Unity keinerlei Auswirkungen
  • Auch die Tatsache, dass VStudio nicht in seinem Standardpfad installiert war (irgendwann wurde ich paranoid und dachte, dass es möglicherweise einige VStudio Hardcodierte Pfade in Unity Dateien) waren nicht die Ursache

Der nächste Schritt, den ich tat, war, das ursprüngliche Szenario neu zu erstellen (wo es früher funktionierte):

  • Installiere VStudio mit "meinen" anfänglichen Optionen (z. B. Spieleentwicklung mit deaktiviertem Unity )
  • Installiere Unity mit den Standardoptionen - lösche den RegKey (den ich in der Frage erwähnt habe) vor der Installation

und es hat funktioniert !!!

Dann wusste ich, dass eine der Unity Komponenten mit meinen Einstellungen herumwirbelt, also zusätzlich zur Basisinstallation (der Inhalt der install.bat bis vs_Community.exe ) Ich habe nacheinander mit der Installation aller anderen Optionen begonnen und nach jeder Komponenteninstallation überprüft, ob ich in der Lage bin, eine PC Standalone bauen und ...

Kurzgeschichte

Es stellt sich heraus, dass Facebook Gameroom Build Support (wie im Assistenten gezeigt) das war Wurzel aller meiner Probleme . Also, eine weitere Neuinstallation von (sowohl VStudio als auch) Unity ( ohne Die Facebook Build-Unterstützung) wirkt wie ein Zauber.

Jetzt ist die Untersuchung erst zur Hälfte abgeschlossen, ich muss noch herausfinden , warum dies passiert, aber ich werde hier aufhören. Wenn ich in Zukunft für Facebook bauen muss, muss ich es herausfinden und zum Laufen bringen, aber im Moment werde ich es nicht tun.
Beachten Sie, dass für meinen (noobischen) Zweck Standalone ( [~ # ~] pc [~ # ~] Da ich momentan auf Win bin, reichen Builds (und vielleicht WebGL auch zum Testen vom Browser), aber ich installiert alle anderen für den Fall, dass ich mit ihnen herumspielen möchte.

1
CristiFati

Das Problem scheint beim Hinzufügen von Facebook Gameroom Build-Unterstützung aufgetreten zu sein und ist seit 2017.3.1f noch nicht behoben.

Problemumgehung:

  1. Wechseln Sie in den Ordner Unity (C:\Program Files\Unity unter Windows x64).
  2. Verschieben Sie Unity/Editor/Data/PlaybackEngines/Facebook in den Unity-Ordner. Jetzt haben Sie Editor und Facebook nebeneinander

Von @jura_z at https://forum.unity.com/threads/installing-facebook-gameroom-build-support-gives-loads-of-fuer-falker-wenn-building-to-windows-standalone.489495/

1
angularsen