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.
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.
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
Tags und Links .net connection-string 32bit-64bit app-config