Für die App, die auf Microsoft.SqlServer.Smo verweist, müssen zusätzliche Assemblys auf dem Zielcomputer enthalten sein.

StackOverflow https://stackoverflow.com/questions/76933

  •  09-06-2019
  •  | 
  •  

Frage

Ich habe eine kleine App, die auf die Microsoft.SqlServer.Smo-Assembly verweist (damit ich dem Benutzer eine Liste der Server und Datenbanken anzeigen kann, mit denen er eine Verbindung herstellen kann).

Meine Anwendung verwies ursprünglich auf Microsoft.SqlServer.Smo und Microsoft.SqlServer.ConnectionInfo.Auf meiner Entwicklungsbox funktionierte alles wie erwartet.

Als ich die Anwendung auf einem Testcomputer installierte, erhielt ich eine System.IO.FileNotFoundException.Zu den Einzelheiten der Nachricht gehörte Folgendes:Datei oder Assembly Microsoft.SqlServer.SmoEnum konnte nicht geladen werden

Ich habe das Problem schließlich gelöst, indem ich zusätzlich zu den oben genannten auf die folgenden Assemblys verwiesen habe:

  • Microsoft.SqlServer.SmoEnum
  • Microsoft.SqlServer.SqlEnum
  • Microsoft.SqlServer.BatchParser
  • Microsoft.SqlServer.Replication

Kann jemand bestätigen, dass ich tatsächlich jede dieser zusätzlichen Assemblys in meine Anwendung einschließen (und sie daher auf den Computern der Benutzer installieren muss), obwohl die App problemlos auf meiner Entwicklungsbox erstellt werden kann, ohne dass darauf verwiesen wird?

War es hilfreich?

Lösung

Ja, sie müssen einbezogen werden.Auf dem Entwicklungscomputer ist wahrscheinlich SQL Server installiert, der diese Assemblys im globalen Assemblycache ablegt.Wann immer Sie erstellen, ruft Visual Studio sie einfach aus dem GAC ab.Es wird außerdem davon ausgegangen, dass der GAC des Computers, auf dem es bereitgestellt wird, ebenfalls über diese Dateien verfügt.Wenn nicht, wird die FileNotFound-Ausnahme ausgelöst.

Andere Tipps

Sie benötigen zwei MSI-Dateien auf einem Zielrechner zu installieren, und zwar:

1) SQLSysClrTypes.msi [diese wird benötigt für C # -> SMO GAC]

2) SharedManagementObjects.msi

Für SQL Server 2014 können Sie diese dowload hier .

Sie müssen außerdem sicherstellen, dass die Version korrekt ist. Diese beiden Dateien können mit ein wenig Googeln gefunden werden. So können Sie kopieren alles zu lokalen nicht & sie werden von GAC gelöst werden.

Ich weiß, dass dies alte Frage, aber die Antworten waren nicht zufriedenstellend.

Da JIT Links zu externen Baugruppen zur Laufzeit, diese Frage nicht, Ihren Code ohne Analyse beantwortet werden können und zu sehen, was Sie anrufen und wiederum, was diese Anrufe nennen, etc.

Wenn Sie diese Texte selbst analysieren wollen, ist Ihre beste Wette nur die Montag benötigen Sie verweisen würde und dann von den Ausnahmen und inneren Ausnahmen zu erfahren, was passiert ist.

Eine andere Sache, die Sie achten sollten in ist, warum die vier Baugruppen, die Sie erwähnen nicht im GAC sind. Es scheint sicher, wie sie sein sollten.

Für mich ist diese Antwort erwies sich als nicht wahr zu sein. Ich fügte hinzu, die oben genannten Referenzen, aber ohne Auflösung. Schließlich fand ich, dass ich nur die Referenz benötigt:

Microsoft.SqlServer.Smo

... und die folgende Entschließung an:

ich bekomme einen ‚Es wurde versucht,

Um es zusammenzufassen, ich brauchte, um meine IIS 6 zu ermöglichen, 32-Bit-Anwendung auf IIS App Pool zu ermöglichen. Das ist, weil ich Win 7 x64 hatte aber ein SQL-x86 installieren. Schade, dass die Fehlermeldung nicht mehr spezifische huh sein kann?

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top