2017-07-10 1 views
0

Ich habe einen Code, der großartig funktioniert. Ich mache ein Stück, wo ich in eine XML-Datei schreibe, und wenn ich das hier baue und die .exe aus dem Debug-Ordner laufe, schreibt alles ohne Probleme. Das Problem kommt, wenn ich das Installationsprogramm veröffentliche, bekomme ich einen IO-Fehler, Datei nicht gefunden Ausnahme.Datei-E/A-Ausnahme bei der Installation von Clickonce-Installationsprogramm nicht gefunden C#

Stück, die

/// <summary> 
    /// Injects new user data into credentials XML 
    /// </summary> 
    /// <param name="username"></param> 
    /// <param name="password"></param> 
    /// <param name="xmlSource"></param> 
    public static void AddUser(string username, string password) 
    { 
     string xmlPath = Path.Combine(Environment.CurrentDirectory, @"Data\Credential.xml"); 
     XDocument doc = XDocument.Load(xmlPath); 
     XElement user = doc.Element("Users"); 
     user.Add(new XElement("User", 
        new XElement("username", username), 
        new XElement("password", password))); 
     doc.Save(xmlPath); 
    } 

Die XMLPATH XML schreibt nimmt das aktuelle Verzeichnis und fügen Sie den Data dir und verbindet schließlich in die XML-Datei. Was würde dies nur zum Absturz bringen, wenn ich den Clickonce Installer mache? Muss ich den Ressourcentyp zu etwas Besonderem ändern?

+0

Versuchen Sie, den Pfad zu einem Protokoll (oder einer Fehlermeldung) auszugeben. Ich würde vermuten, dass CurrentDirectory nicht das ist, was Sie erwarten. – Steveland83

Antwort

0

Haben Sie versucht, den tatsächlichen Pfad der Assembly zu erhalten? wie unter

var path = System.Reflection.Assembly.GetExecutingAssembly().Location; 
var dir= Path.GetDirectoryName(exePath); 
var youdatafolder = Path.Combine(dir, "/Data"); 

Sie könnten versuchen, die IOException zu fangen und sehen, was der Ordner mit dem aktuellen Code sucht. es kann dir einen Hinweis geben.

Verwandte Themen