Laden...

Setting hat im Debugger den richtigen, in der fertigen Anwendung den falschen Wert

Erstellt von ShinigamiSama vor 11 Jahren Letzter Beitrag vor 11 Jahren 1.327 Views
S
ShinigamiSama Themenstarter:in
28 Beiträge seit 2011
vor 11 Jahren
Setting hat im Debugger den richtigen, in der fertigen Anwendung den falschen Wert

Hallo liebe Community, ich bin nach langer Zeit mal wieder im Forum, und ich habe auch schon wieder ein Problem. Und zwar schreibe ich gerade in C# mit dem 2.0 Framework eine Anwendung, die das austauschen empfohlener Items in einem Spiel (League of Legends) austauscht.

Der Code zeigt keine Fehler, alles funktioniert super, wenn ich debugge, läuft das Programm ohne Fehler und ohne Ausnahmen.
Starte ich die Anwendung aber per Hand mit der .exe-Datei im Debug Ordner (also nicht die .vhost.exe-Datei), dann geht zwar alles, aber der Export macht einen Fehler, indem er eine ini in den falschen Pfad speichert.

Wenn ihr weitere Informationen braucht, werde ich diese natürlich nachträglich beifügen.

PS: Falls es relevant ist, ist der eigentliche Ausgabepfad so:
{Installationspfad}\League of Legends\rads\solutions\lol_game_client_sln\releases\0.0.0.{Versionsnummer}\deploy\DATA\Characters{Champion}
(bei mir: C:\Riot Games\League of Legends\rads\solutions\lol_game_client_sln\releases\0.0.0.193\deploy\DATA\Characters\Mordekaiser)

Aber den Fehler macht er so:
C:\Riot Games\League of Legends\rads\solutions\lol_game_client_sln\releases\0.0.0.190\League of Legends\rads\solutions\lol_game_client_sln\releases\0.0.0.193\deploy\DATA\Characters\Mordekaiser

EDIT !!!!!!!!!!!!!
Habe den Fehler gefunden, doch kann ich mir den Fehler erklären, und beheben kann ich ihn auch nicht:

In den Properties steht bei mir:

ClientVersion | short | 193
Path | string | C:\Riot Games

ABER Wenn ich das Programm starte, dann ist in den Properties immer:
C:\Riot Games\League of Legends\rads\solutions\lol_game_client_sln\releases\0.0.0.190

Hinweis von herbivore vor 11 Jahren

Bei dem Tool geht es um ein ItemChanger. Diese sind offiziell geduldet, weshalb kein Verstoß gegen die AGBs vorliegt. Der Thread ist also zulässig.

S
ShinigamiSama Themenstarter:in
28 Beiträge seit 2011
vor 11 Jahren

Hallo liebe Community, nach dem Tipp von Herbivore geht wohl aus meinem Thema nicht heraus, wo mein Problem liegt, also denke ich, dass ich nochmal eine bildliche Darstellung meines Problems zeige.
PS: ich glaube nicht, dass das Problem ein Codetechnisches Problem ist, sondern eher ein Problem von der IDE (VS2010) aus ist.

Also, in meiner Anwendung habe ich 2 Einstellungsvariablen:
ClientVersion & Path

Beim Debug mit der ".vhost.exe" läuft alles richtig.

Dann der Versuch mit der regulären Exe, die man für die fertige Anwendung benutzt ("Shinigamis LoL-RIC.exe")

Hier sind die Einstellungen in VS:
Siehe Anhang 1

Dann starte ich die Anwendung und gehe auf Einstellungen:
Siehe Anhang 2

Dann gehe ich über "Client" auf Installationspfad:
Siehe Anhang 3

Jetzt öffnet sich (wie programmiert) eine InputBox, ähnlich einer MessageBox, und zeigt mir dann folgendes an:
Siehe Anhang 4

In der TextBox steht dann da:
"C:\Riot Games\League of Legends\rads\solutions\lol_game_client_sln\releases\0.0.0.190"

Der Code für das Event, welches beim Drücken auf "Installationspfad" ausgelöst wird:

private void OnInstallStripItemClicked(object sender, EventArgs e)
{
    InputBox.OKButtonClick += new InputButtonClickEventHandler(OnOKButtonClicked);
    InputBox.Show("Installationspfad:", "Installationspfad", Properties.Settings.Default.Path, EnumDialogButtons.OKCancel);
    InputBox.OKButtonClick -= new InputButtonClickEventHandler(OnOKButtonClicked);
}

Irre ich mich oder sollte da statt "C:\Riot Games\League of Legends\rads\solutions\lol_game_client_sln\releases\0.0.0.190" nicht "C:\Riot Games" stehen, wie ich in den Properties eingestellt habe?

Beim Debug funktioniert es wie gesagt, da steht dann "C:\Riot Games".

Brauche Hilfe.

S
ShinigamiSama Themenstarter:in
28 Beiträge seit 2011
vor 11 Jahren
S
ShinigamiSama Themenstarter:in
28 Beiträge seit 2011
vor 11 Jahren
S
ShinigamiSama Themenstarter:in
28 Beiträge seit 2011
vor 11 Jahren
S
ShinigamiSama Themenstarter:in
28 Beiträge seit 2011
vor 11 Jahren
B
357 Beiträge seit 2010
vor 11 Jahren

Hast du denn schonmal genau durchdebuggt? Irgendwo muss das Ding ja herkommen. Setz dir auf die Variable eine Überwachung und behalte auch die Aufrufliste im Auge, wann was woher kommt.

S
ShinigamiSama Themenstarter:in
28 Beiträge seit 2011
vor 11 Jahren

Ich habe das schon gemacht, alles, beim Programmstart schon per Messagebox die Properties angezeigt, es ist von vorne herein falsch, aber über Debug geht das. Es ist auf jeden fall kein Codefehler, wenn mein Kollege es bei sich neu erstellt, sind die Properties richtig, aber bei mir nicht. Und ich hab auch schon versucht, das Projektz zu löschen und dann einfach neu einzufügen, aber das geht auch nicht. Kann es sein, dass bei mir irgendwas im Cache gespeichert ist? Aber es ist selbst nach nem Neustart immer noch falsch. Ich probiere nochmal rum, vllt kriege ich etwas hin.

EDIT:

Liebe Community, ich habe es nun soweit, dass alles läuft, wie es soll. Ich habe ein anderes Projekt mit einem anderen Namen erstellt und einfach den Code kopiert, nun funktioniert es. Ich gehe mal davon aus, dass irgendwo auf meiner Festplatte ein Abbild für meine Anwendung existiert oder ähnliches, weshalb die Properties wohl nicht die neuen Einstellungen übernommen hat oder ähnliches, zumindest vermute ich das. Wenn ihr wisst, woran es liegen könnte, sagt es mir, da es blöd ist, bei solchen Problemen immer ein neues Projekt mit anderem Namen zu erstellen.

Aber trz danke für die Hilfe.

Mfg.

Shinigami

49.485 Beiträge seit 2005
vor 11 Jahren

Hallo ShinigamiSama,

ich bin kein Settings-Experte, aber anscheinend ist das Problem, dass du die Settings in VS geändert/kontrolliert hast, aber dann die schon deployte Anwendung gestartet hast, die ihre eigene Kopie der Settings hat, siehe auch MSDN:

How To: Change the Value of a Setting Between Application Sessions

At times, you might want to change the value of a setting between application sessions after the application has been compiled and deployed. For example, you might want to change a connection string to point to the correct database location. Since design-time tools are not available after the application has been compiled and deployed, you must change the setting value manually in the file.

herbivore