Visual Basic 2010 - Programm läuft nicht

LunkY

Cadet 2nd Year
Dabei seit
Apr. 2009
Beiträge
30
Hallo zusammen,

ich bin auf ein Problem gestoßen, an dem ich langsam verzeifel und deshalb hier eure Hilfe suche.
Ich habe ein Programm in Visual Basic 2010 geschrieben und wollte es nun auf anderen Rechnern ausprobieren. Zuerst kam die Meldung, dass ich Net Framewoks 4.0 installieren muss -> kein Problem. Nur danach geht nichts mehr. Wenn ich die exe-Datei öffne kommt sofort die Meldung, dass das Programm nicht mehr richtig läuft und geschlossen werden muss.
Das Problem tritt auf Rechnern mit Windows XP und 7 auf (Vista noch nicht ausprobiert). Nur wenn ich zuvor Visual Basic 2010 auf dem Rechner installiere lässt sich die exe-Datei starten.

Ich bitte um Lösungsvorschläge, hab echt kein Bock nochmal alles in VB 2008 neu zu machen (womit es vermutlich laufen wird)
 

Sheeep

Lt. Junior Grade
Dabei seit
Juli 2007
Beiträge
272
Stells mal auf .net 2 oder 3.5 (in den Projektsettings) und kompiliere es neu...
Ich nehm einfach mal an dir reicht .net 2, von .net 4 hast du sowieso nichts, denn dann müsste es schon brutal aufwendig sein.
.net 2 ist das stabilste und es reicht eigentlich... beim threading hat .net 4 vorteile, aber insgesamt eher mehr nachteile.

Wieviel Threads hat dein programm?

Hast du sonst noch irgendwelche bibliotheken verwendet, die den anderen rechnern fehlen könnten?

Naja, den sourecode in ein neues projekt in vs2008 zu kopieren wäre in notfall nicht so schwer...

Noch ein tipp: .net oberflächen sind zwar einfach, aber ich halte nicht soviel davon. entweder du willst, dass das ding schnell ist, dann verwende native frameworks wie gtk+ oder du willst es platformunabhängig, dann nimm java, das läuft später besser (weniger programmierfehler, der compiler ist strenger!) und vorallem auf allen systemen (auf jeder halbwegs aktuellen jvm).
Java ist auch net schwerer als Visual Basic, im gegenteil....
 
Zuletzt bearbeitet:
M

MC BigMac

Gast
java und leichter als Basic, nein, aber mit VB machst du dich nur kaputt.
 

TheCadillacMan

Commander
Dabei seit
Juni 2005
Beiträge
2.390
@Sheep und @MC BigMac:
DankY hat ein ganz konkretes Problem und ihr empfehlt ihm gleich eine andere Sprache. Das löst sein Problem nicht wirklich. Persönliche Meinungen zu VB haben nichts mit dem Thema zu tun.

.net 2 ist das stabilste und es reicht eigentlich... beim threading hat .net 4 vorteile, aber insgesamt eher mehr nachteile.
Welche Nachteile hat .NET 4 gegenüber .NET 2? Die Veränderungen sind nicht so gravierend, dass sie die Stabilität beeinflussen sollten.

Zum Thema:
Für mich klingt das so, als ob du ein bestimmtes (nicht-.NET Framework)Assembly referenziert hast, dass auf den anderen Rechnern nicht vorhanden ist. Falls es so ist, kannst du versuchen die diese DLLs in das Verzeichnis zu kopieren in der deine EXE liegt.
 

stevets

Ensign
Dabei seit
Nov. 2008
Beiträge
139
.net 4.0 hat keine Nachteile gegenüber .net2.0 das ist humbug weder in der Stabilität noch sonstwas... Verwende weiter .net 4.0 wenn du willst.

Warum solltest du durch Java weniger Programmfehler haben? Aus welchem Märchenbuch hast du den das? Stand in dem Buch auch das der Compiler "strenger" ist, ja?

So nun zu DankY. Wenn dein Programm beendet wird, wird normalerweise noch ein Fehler mit ausgegeben die Exception die ausgelöst wurde, wenn du die einmal pasten könntest wäre man sich im Stande dir einfacher weiter zu helfen. (Einfach in dem Fenster auf Details klicken, ich glaube Details ist es...)
 

Rossibaer

Lieutenant
Dabei seit
Apr. 2007
Beiträge
735
Um den Fehler etwas näher einzugrenzen, könntest du mal folgende Zeilen in eine Batch-Datei schreiben und diese starten:

Code:
DeinProgramm.exe 1>DeinProgramm.1.log
DeinProgramm.exe 2>DeinProgramm.2.log
DeinProgramm.exe 3>DeinProgramm.3.log
Schau dir die Log-Dateien mal mit einem Texteditor an, kann sein das welche leer sind, aber vielleicht steht da dann die exakte Exception mit Stacktrace drin, wo man hier wesentlich mehr damit anfangen könnte als bloß "geht nicht".

Also versuche das mal und poste den Inhalt der Log-Datei in der etwas drin steht. Kann auch sein das nichts drinsteht. In dem Fall dann schade, weil die Infos von dir nicht wirklich weiter helfen.

PS: Dein Programm würde 3x starten und ggfs. 3 mal crashen. Sollte aber kein Problem sein.
 
M

MC BigMac

Gast
Unsichere Schreibweise, doppelte Variablen Deklaration, Unübersichtlichkeit, da gibt es noch mehr was bei VB Schief laufen kann. Für Makros ist es noch ok, aber für alles andere nicht empfehlenswert.
 

stevets

Ensign
Dabei seit
Nov. 2008
Beiträge
139
Was soll eine unsichere Schreibweise sein?

Kann es sein das du hier über Visual Basic Script redest?
 
M

MC BigMac

Gast
ich komme mit beidem nicht klar, mit der Schreibweise.

im Endeffekt hat er so wieso nur eine Chance das Ding zum laufen zu bringen, wenn er eine Log Datei erstellt, wie schon erwähnt.
 
Zuletzt bearbeitet:

olampl

Lt. Commander
Dabei seit
Aug. 2005
Beiträge
1.684
@TE: Zip das Projekt und lad es hoch, so kann dir vermutlich noch viel schneller geholfen werden.
 

Rossibaer

Lieutenant
Dabei seit
Apr. 2007
Beiträge
735
@stevets, mc bigmac und die die ich noch vergessen haben sollte: Bitte lasst das ganze Gefasel über VB mal aussen vor und macht stattdessen einen eigenen Thread auf. Da kann dann jeder seine persönliche Lieblingssprache bis zum Erbrechen hervorheben. Jedoch zeigen die bisherigen Kommentare über die angeblichen Schwächen von Visual Basic .Net ein gewisses Unwissen über die Sprache. Aber sei es wie es sei! Ich schließe mich CadillacMan an. Das hier ist ein Thread zu einem konkreten Problem und sollte sich auch nur darum drehen. Danke im voraus für euer Verständnis.
 
Zuletzt bearbeitet:

LunkY

Cadet 2nd Year
Ersteller dieses Themas
Dabei seit
Apr. 2009
Beiträge
30
Super, so viele Antworten. Ich arbeite mich mal von Anfang bis Ende durch:

Auf .net 3.0 oder 2.0 umstellen habe ich schon versucht, aber dann bekomme ich eine Hand voll Fehlermeldungen und das Programm lässt sich nichtmal mehr im Debug-Modus starten.

@TheCadillacMan: Um welche DLLs handelt es sich und wo finde ich diese?

Den Fehlercode habe ich als Screenshot angehangen.

Hoffe mal ich habe es richtig gemacht mit der Batch-Datei, aber es steh leider nichts drin. Reicht es, wenn sich die Batch-Datei im selben Ordner wie das Programm befindet? Nur zur Info, bin noch Anfänger, also nicht so viel von mir verlangen ;)

Ach so und eine andere Programmiersprache kommt eh nicht in Frage.

Danke schonmal
 

Anhänge

stevets

Ensign
Dabei seit
Nov. 2008
Beiträge
139
Super, so viele Antworten. Ich arbeite mich mal von Anfang bis Ende durch:

Auf .net 3.0 oder 2.0 umstellen habe ich schon versucht, aber dann bekomme ich eine Hand voll Fehlermeldungen und das Programm lässt sich nichtmal mehr im Debug-Modus starten.

@TheCadillacMan: Um welche DLLs handelt es sich und wo finde ich diese?

Den Fehlercode habe ich als Screenshot angehangen.

Hoffe mal ich habe es richtig gemacht mit der Batch-Datei, aber es steh leider nichts drin. Reicht es, wenn sich die Batch-Datei im selben Ordner wie das Programm befindet? Nur zur Info, bin noch Anfänger, also nicht so viel von mir verlangen ;)

Ach so und eine andere Programmiersprache kommt eh nicht in Frage.

Danke schonmal
Wenn du einfach umstellst hast du vmtl noch einige sachen referenziert die das neue .net 4.0 sind.

Es wäre mal interessant die ganze Fehlerbeschreibung zu sehen, da man nur erkennen kann das du eine InvalidOperationException irgendwo nicht auffängst.
 

LunkY

Cadet 2nd Year
Ersteller dieses Themas
Dabei seit
Apr. 2009
Beiträge
30
So, nach ca. einer Stunde googeln muss ich die Frage doch noch stellen: Wie komme ich an den Fehlerbericht? ;)
Den Text aus dem Fenster kann man nicht kopieren und mit dem Tool "Dr. Watson" hab ich es schon ausprobiert, aber das erstellt kein crash file.
 

Rossibaer

Lieutenant
Dabei seit
Apr. 2007
Beiträge
735
@DankY: Die Batchdatei ist am besten im selben Verzeichnis, wie das Programm selbst. Aber wenn du nichts gesehen hast, dann lohnt es auch nicht weiter in dieser Sache zu bohren.

Andere Möglichkeit wäre der .Net Reflector um rauszufinden welche DLLs tatsächlich referenziert sind. Download ist hier: http://www.red-gate.com/products/reflector/

Das Tool ist installationsfrei. Kopiere es dir am besten auf einen USB Stick und starte es bei jedem Rechner mal. Im .Net Reflector über das Menü File/Open... öffnest du dein Programm und navigierst zu den References, wie ich es im Screenshot für "IRadioStreamRecorder" gemacht habe. Wenn jetzt eine DLL auf dem Rechner fehlt, sollte diese mit einem roten Icon statt dem graublauen Icon versehen sein. So bekommst du zumindest schon mal raus, welche DLL evtl. fehlt.

References.JPG

Und mach jetzt bitte keine Versuche in dem du auf ein anderes .Net Framework umstellst, weil A) es kostet Zeit und Nerven B) es löst nicht dein Problem und C) das kann man später immer noch machen, wenn es nicht anders geht.
 
Zuletzt bearbeitet:

Sheeep

Lt. Junior Grade
Dabei seit
Juli 2007
Beiträge
272
@sheep: Das interessiert mich jetzt aber auch mal, welche Nachteile es mehr hat.
Klär uns auf.
Ganz einfach, .net wurde von microsoft immer mehr aufgebläht, mit funktionen, die du und ich nicht brauchen, grad von 2 auf 3 kamen tausend sachen dazu, die gar nicht bringen. schau dir mal die .net bibliothek an...

War ja auch nur ne idee mit .net 2, weil DankY gesagt hat, dass er es erst installieren musste.

@DankY

wenn du visual studio 2010 auf dem andern rechner installierst, geht es dann?
 

Drakonomikon

Commander
Dabei seit
Okt. 2005
Beiträge
2.267
Habe jetzt nicht alles hier gelesen, aber wenn dass Programm auf einem anderen Rechner nicht funktioniert wäre es das Beste wenn du dort einfach VB2010 installierst und dein Projekt startest.

Dann weißt du vielleicht mehr. Es könnte einfach am Projekt selbst liegen und nicht am .Net-Framework.

EDIT: Grausam was hier teils für ein Nonsens verzapft wird.
 
Zuletzt bearbeitet:

nekro1

Lt. Commander
Dabei seit
Feb. 2007
Beiträge
1.731
Aus eigener Erfahrung waren es bei mir fehlerhafte bzw. nicht vorhandene Frameworks zb PowerPaks etc... umgehen konnte man das entweder bei dem man alle Frameworks auf dem Ziel Host installiert oder aber bei Projekt -> Eigenschaften , Verweise dort mal schaut welche Frameworks genutzt werden und die .DLL mitliefert.

PS: was hacken alle auf .NET rum andere OO Programmiersprache lernen?! Ich persönlich programmiere in JAVA als auch in .NET und ich komme in .NET sehr gut zurecht. Autocodevervollständigung, Klammersetzung und .NET verzeiht auch schneller Fehler.

Du hast aufjedenfall nicht alle Exceptions abgefangen in deinem Programm, denn du kriegst eine "invalidoperationexception". Dafür stellt .NET eine "ApplicationEvents" Class zur Verfügung, welche sonstige Event abhandeln kann , welche noch vor oder nicht in deiner Form1 behandelt werden. Schaue dazu mal bei dem Application"unhandeld exceptions" nach.

Ich bleib trotzdem dabei es fehlen .DLLs , wahrscheinlich fehlt das .NET Framework, du kannst es dir ja auslesen lassen. in der Application_Startup

Code:
Imports Microsoft.Win32


Namespace My

    Partial Friend Class MyApplication
        Dim key As RegistryKey
        Dim subKey As RegistryKey
        Dim keyPath As String = "Software\Microsoft\NET Framework Setup\NDP\"
        Dim versionValue As String = ""
        Dim dotNETV40 As Boolean = False

        Public Sub MyApplication_Startup(ByVal sender As Object, ByVal e As Microsoft.VisualBasic.ApplicationServices.StartupEventArgs) Handles Me.Startup
            Try
                key = Registry.LocalMachine.OpenSubKey(keyPath, False)
                For Each item In key.GetSubKeyNames
                    If item.StartsWith("v") Then
                        subKey = Registry.LocalMachine.OpenSubKey(keyPath + item.ToString + "\", False)
                        versionValue = subKey.GetValue("Version", 0).ToString
                        If versionValue.StartsWith("4.0") Then
                            dotNETV40 = True
                        End If
                    End If
                Next
                If dotNETV40 = False Then
                    MsgBox("You need to install .NET Framework 4.0 to provide Errors", MsgBoxStyle.Critical, "Error")
                End If
            Catch ex As Exception
                MsgBox(ex.ToString)
            End Try
        End Sub
    End Class
End Namespace
 
Zuletzt bearbeitet:

toeffi

Lt. Junior Grade
Dabei seit
Feb. 2010
Beiträge
474
@Sheep das ist keine Hinreichende Argumentation deiner Aussage von vorher. Ich möchte Fakten wissen was du als Nachteile siehst und dann können wir auch auf einer fachlich besseren Ebene diskutieren, zu behaupten das es Nachteile gibt und Funktionen die du und ich nicht brauchen ist einfach zu lasch, zumal von 2 auf 3 ne Menge gekommen ist was man wirklich gut gebrauchen kann. Aber ich bin nicht an der Reihe zu erklären was gut ist, sondern du warst dran zu erklären was schlecht ist.
 
Top