| 

.NET C# Java Javascript Exception

4
Ich habe ein Setup-Projekt von .NET 2.0 auf .NET 4.0 "gehoben". Während des Setup´s werden Datenbankenobjekte erstellt (DB, Schema und Daten).

Leider ist aber SMO nur mit .NET 2.0 kompiliert. Hab nix gefunden, dass es SMO auch als 4.0 Version gibt und das überall angepriesene anpassen mit der app.config funktioniert nicht.

Also hab ich an einer Stelle das ExecuteNonQuery gegen einen ExecuteReader getauscht. Das funktioiert auch - solange ich keine Datei als Batch-Quelle für meine Befehle verwende - da werden nämlich die "GO"-Befehle als Trennzeichen verwendet. ExecuteNonQuery kommt mit den Batch-Dateien zurecht - ExecuteReader aber nicht

Kann dass jemand "bestätigen" bzw. mir einen Tipp nennen, wie ich das "geliebte" ExecuteNonQuery dennoch verwenden kann? Es kann doch nicht sein, dass MS keine aktuellen SMO-Dlls bereitstellt

mfg
Michael
19.03.2012
MyKey0815 1,6k 2 9
Was heisst "...das überall angepriesene anpassen mit der app.config funktioniert nicht"?
Hast Du es so versucht, wie ich in einer Antwort zu einer anderen Frage beschrieben habe:

http://codekicker.de/fragen/Applikation-4.0-2.0-Verfuegung-stellen#a26022

Bekommst Du dann immer noch die System.IO.FileLoadException?
ffordermaier 20.03.2012
2 Antworten
1
Hallo,

ich hatte das Problem ehr mit 64 bit und bin darauf gestoßen, dass in den einem XMO Feature Pack die richtigen SMOs drin waren. Das ganze heißt Microsoft SQL Server 2005 Management Objects Collection und zufinden unter http://www.microsoft.com/download/en/details.aspx?id=15748
In unserem Fall war es für den SQL Server 2005 Express 64 bit. Und auf einem da fehlten diese mir auch.

Wenn du von einer .net 4 Assembly eine 2.0 aufrufen möchtest, dann musst du noch in die app.config die useLegacyV2RuntimeActivationPolicy auf true setzen

<startup useLegacyV2RuntimeActivationPolicy="true">
<supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.0" />
</startup>

Hoffe hilft dir weiter.
20.03.2012
KCT 937 1 8
0
Eine .Net4 Assembly kann Assemblies niedrigerer Versionen referenzieren und aufrufen. Nur umgekehrt (alte version ruft neuere auf) geht's nicht.
19.03.2012
devio 302 3
Dennoch kommt es zu einem Fehler bei
SQLServer.ConnectionContext.ExecuteNonQuery(TSQLScript)


Als Meldung kommt:
System.IO.FileLoadException: Mixed mode assembly is built against version 'v2.0.50727' of the runtime and cannot be loaded in the 4.0 runtime without additional configuration information.
MyKey0815 19.03.2012

Stelle deine .net-Frage jetzt!
TOP TECHNOLOGIES CONSULTING GmbH