98575
Goto Top

InvalidOperationException beim ändern der .NET Framework-Version

Problem mit My.Settings durch ändern des Zielframeworks

Hallo liebe Community,

Ich schreibe gerade an einem Programm, welches Dateien auf einen Server überträgt, der diese Dateien via php interpretiert und ausgibt. Da liegt jedoch nicht das Problem. Das Programm ist mit der Express-Edition von VB.NET geschrieben (.NET Framework 4.0)
Da das Programm auf einem Rechner laufen soll, welcher aber nur .NET 3.0 installiert hab, habe ich eine extra Version erstellt mit dern geändertern Kompilierungseinstellungen wieder kompiliert.
Das Programm, welches vorher einwandfrei funktioniert hat, macht nun Probleme:

Fehler beim Erstellen des Formulars. Weitere Informationen finden Sie in Exception.InnerException. Fehler: Beim Erstellen des Konfigurationsabschnittshandlers für "userSettings/ftptransfer.My.MySettings" ist ein Fehler aufgetreten.: Die Datei oder Assembly "System, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" oder eine Abhängigkeit davon wurde nicht gefunden. Das System kann die angegebene Datei nicht finden. (D:\Dokumente und Einstellungen\daubli\Desktop\build2\ftptransfer.exe.config line 5).

Aus der Fehlermeldung ist zu entnehmen, das My.Settings Probleme macht. Ohne die Verwendung von Anwendungsvariablen funktioniert das Programm mit geändertem Framework. Das ist aber nicht mein Ziel. Der Code der den My.Settings teil enthält sieht so aus:

' lokales Verzeichnis, in dem sich die Datei befindet,
' die hochgeladen werden soll
Dim sLocalPath As String = "C:\tmp\"
Dim sLocalFile1 As String = "name.dat"
Dim sLocalFile2 As String = "comment.dat"

' FTP-Server
Dim sFTPHost As String = My.Settings.sFTPHost

' Benutzername und Kennwort für den Server-Zugriff
Dim sUserName As String = My.Settings.Username 'Username
Dim sPassword As String = My.Settings.Password 'Passwort

und

Imports System.Windows.Forms

Public Class Dialog1
Private Sub OK_Button_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles OK_Button.Click
Me.DialogResult = System.Windows.Forms.DialogResult.OK
If (TextBox1.TextLength <> 0 And TextBox2.TextLength <> 0 And TextBox3.TextLength <> 0) Then
My.Settings.sFTPHost = TextBox1.Text
My.Settings.Username = TextBox2.Text
My.Settings.Password = TextBox3.Text
Me.Close()
Else
MsgBox("Alle Felder müssen ausgefüllt sein", MsgBoxStyle.Critical)
End If
End Sub

Private Sub Cancel_Button_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Cancel_Button.Click
Me.DialogResult = System.Windows.Forms.DialogResult.Cancel
Me.Close()
End Sub

Private Sub Dialog1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
Me.Text = "Einstellungen"
Label1.Text = "Nehmen Sie hier die benötigten Einstellungen vor:"
Label2.Text = "Hostadresse (ftp):"
Label3.Text = "Username:"
Label4.Text = "Passwort:"

TextBox1.Text = My.Settings.sFTPHost
TextBox2.Text = My.Settings.Username
TextBox3.Text = My.Settings.Password
End Sub
End Class

Für eure Hilfe bedanke ich mich schon im vorraus =)

greetz daubli

Content-Key: 170441

Url: https://administrator.de/contentid/170441

Printed on: April 16, 2024 at 15:04 o'clock

Mitglied: 98575
98575 Jul 26, 2011 at 15:17:17 (UTC)
Goto Top
Das Problem ist gelöst. (Ich poste hier mal die Lösung, falls jemand das gleiche Problem hat):

In der Fehlermeldung steht, dass etwas mit den UserSettings nicht stimmt. Wo werden Settings festgelegt? In der *.config Datei.
Und genau hierauf bezieht sich auch die Fehlermeldung mit "line 5". Beim ändern des Zielframeworks wird (leider) hier die alte Angabe nicht geändert:

1: <?xml version="1.0"?>
2: <configuration>
3: <configSections>
4: <sectionGroup name="userSettings" type="System.Configuration.UserSettingsGroup, System, Version=3.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
5: <section name="ftptransfer.My.MySettings" type="System.Configuration.ClientSettingsSection, System, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" allowExeDefinition="MachineToLocalUser" requirePermission="false"/>

In Zeile 5 muss lediglich die angabe von 4.0.0.0 auf 3.0.0.0 geändert werden und schon läuft das Programm. Nachträglich konnte ich das Programm sogar auch .NET Version 2 lauffähig machen.

greetz daubli