app.config und 64-Bit-Maschinen

8

Ich habe eine App, die auf 32-Bit-Systemen funktioniert, aber auf XP 64-Bit-Systemen nicht funktioniert. Ich habe es auf die in meiner app.config definierte Verbindungszeichenfolge aufgespürt:

%Vor%

Wenn ich versuche, es im Code zu referenzieren, finde ich, dass die ConfigurationManager.ConnectionStrings-Sammlung nur die LocalSqlServer-Verbindungszeichenfolge aus der Datei machine.config und nicht meine benutzerdefinierte Zeichenfolge enthält.

Eine weitere Kuriosität ist, dass es gut funktioniert, wenn ich die App aus Visual Studio starte. Nur wenn ich den Freigabeordner nicht mehr benutze, wird die Verbindungszeichenfolge nicht definiert. Die Datei .exe.config der Anwendung befindet sich zusammen mit der .exe-Datei im Freigabeordner und ist aktuell.

    
Dale Lutes 28.05.2010, 16:25
quelle

2 Antworten

3

Ich fand schließlich die Erklärung hier: Ссылка

Kurz gesagt, tritt dieses Verhalten auf, wenn eine Manifestdatei für die Anwendung verwendet wird. In diesem Fall sucht das Framework nach application_name.config, nicht nach application_name.exe.config. Eine Umgehungslösung besteht darin, die Konfigurationsdatei nach dem Erstellen der App umzubenennen. Eine weitere Möglichkeit besteht darin, den Knoten assemblyIdentity zum Manifest hinzuzufügen. In meinem Fall konnte ich einfach die Manifest-Datei löschen und das Leben ist wieder gut.

    
Dale Lutes 28.05.2010 18:51
quelle
1

Fügen Sie die Verbindungszeichenfolge der Datei devenv.exe.config hinzu.

Dies ist

Visual Studio 2010

$$ InstallLocation $$ \ Microsoft Visual Studio 10.0 \ Common7 \ IDE \ devenv.exe.config

Visual Studio 2008

$$ InstallLocation $$ \ Microsoft Visual Studio 9.0 \ Common7 \ IDE \ devenv.exe.config

    
Michael Grassman 28.05.2010 17:06
quelle