2017-09-12 10 views
0

Ich wollte eine Assembly herunterladen und sie im verwalteten Ordner des Unity-Spiels speichern.C# Datei.WriteAllBytes funktioniert nicht/Dateipfad funktioniert nicht

File.WriteAllBytes("file:///" + Application.dataPath + "/Managed/Assembly-CSharp.dll", assembly.bytes); 

Aber irgendwie funktioniert es nicht herunterladen .. Es nur Downloads, wenn ich nur ("Assembly-CSharp.dll");

File.WriteAllBytes("Assembly-CSharp.dll", assembly.bytes); 

Schnelle Hilfe benötigt!

+0

Definieren Sie "es funktioniert nicht". Erwähnen Sie auch die Plattform, auf der Sie diesen Code ausführen, unter – Programmer

+0

Danke, aktualisiert. – Chloe

+0

Ihre Bearbeitung hat nichts verbessert. Es beantwortet nicht die Plattform, auf der Sie diesen Code ausführen ... iOS? Android? Windows? Es erklärt auch nicht Ihr Problem "funktioniert nicht". Siehst du irgendeinen Fehler? Die Fehlermeldung kann so viel helfen. Außerdem haben Sie darüber gesprochen, dass das Herunterladen nicht funktioniert. Alles, was ich sehe, ist sicher nicht Download-Code .... – Programmer

Antwort

3

Sie haben einen Fehler in Ihrer Syntax. Fixieren Sie Ihren Dateipfad:

File.WriteAllBytes("file:///"... 

Sie können entweder einen vollständigen Pfad zu der Datei angeben, z.

File.WriteAllBytes("C:/Users/myFile.txt", assembly.bytes); 

Oder navigieren Sie zu der Datei von Ihnen Hauptordner der Einheit, so wie Sie in Ihrem zweiten Code tat.

Mögliche, alternative Lösung, wenn Sie auf Mac/iOS:

Wenn es auf iOS auf dem Mac ist, kann es über den Übergang zum WebPlayer vorbelegt werden, da Sie keinen iOS Build festlegen Ziel auf dem PC.

Lösung: Setzen Sie Ihr Ziel auf einen Standalone-PC wenn auf dem PC.

source

+0

Funktioniert nur unter Windows – Programmer

+0

Danke, es hat funktioniert! – Chloe

+0

Cool! Markieren Sie es als eine Antwort, wenn Sie nichts dagegen haben :) –

1

Nur zwei Cent, Antworten Pitor die ist die richtige Antwort.

Aber als eine bessere Praxis sollten Sie Path.Combine

In Ihrem Fall verwenden:

var fileName = "/Managed/Assembly-CSharp.dll"; 
var filePath = Path.Combine(Application.dataPath, fileName); 
File.WriteAllBytes(filePath, assembly.bytes); 

Und Sie müssen nicht mit plattformabhängigen Code beschäftigen.