Laden...

[gelöst] Probleme beim Bereitstellen von Programmen mit Visual Studio

Erstellt von 1blankz7 vor 13 Jahren Letzter Beitrag vor 13 Jahren 7.511 Views
1
1blankz7 Themenstarter:in
11 Beiträge seit 2010
vor 13 Jahren
[gelöst] Probleme beim Bereitstellen von Programmen mit Visual Studio

Hallo liebe Forengemeinde,

ich stell mich kurz vor. Mein Name ist Christian und ich komme aus Buxtehude in der Nähe von Hamburg. Ich programmiere erst seid sehr kurzer Zeit und hab deshalb noch nicht viel Ahnung.

So, nun zu meinem Problem. Ich hab jetzt mein erstes Programm geschrieben und auch compiliert. Ich kann es auch außerhalb meiner IDE ausführen, nur kann ich es nicht für andere Rechner bereitstellen. Ich hab es auch schon mit Release und Setup-Projekt versucht. Nichts brachte den gewünschten erfolg. Direkt an meinem geschriebenen Programm kann es denke ich nicht liegen, da ich das Projekt auf einem anderen PC zum laufen gebracht habe, nachdem ich es auch dort neu compiliert hatte. Ich benutze auf Visual Studio 2010 Ultimate und Windows 7 Professional und auf dem anderen Visual Studio 2010 Professional und Win XP Home Edition.

Der Fehler erscheint immer, wenn ich das Programm starten will. Zuerst passiert nichts und dann erscheint ein Fenster, indem steht, das das Programm vorzeitig beendet werden musste und das nicht gespeicherte Daten verloren gegangen sind. Dann wird mir noch vorgeschlagen alles an Microsoft zu senden.

Gibt es irgendeine Einstellung in VS 2010 mit der man das Problem beheben kann.

Freundliche Grüße
Christian

6.911 Beiträge seit 2009
vor 13 Jahren

Hallo und willkommen im Forum,

ist auf den anderen Rechnern auch das .net Framework installiert? Das ist nämlich Voraussetzung.

Siehe auch [FAQ] .net Anwendung ohne installiertes Framework ausführen

Bitte beachte auch [Hinweis] Wie poste ich richtig? Punkt 1.1, 1.1.1

Wenns das ist nicht ist kannst du die Fehlermeldung wiedergeben (Screenshot, u.ä.).

mfG Gü

Stellt fachliche Fragen bitte im Forum, damit von den Antworten alle profitieren. Daher beantworte ich solche Fragen nicht per PM.

"Alle sagten, das geht nicht! Dann kam einer, der wusste das nicht - und hat's gemacht!"

1
1blankz7 Themenstarter:in
11 Beiträge seit 2010
vor 13 Jahren

Ja, hab auf dem anderen System alles installiert. Also Framewor, Klassenbibliothek und so. Hat nichts geholfen. Hatte mir mehrere Bücher geholt und auch gelesen. Hab aber nur in einem Kapitel etwas über Weitergabe gelesen und da auch nichts über das Problem.
Im Anhang befinden sich Screenshots.

1
1blankz7 Themenstarter:in
11 Beiträge seit 2010
vor 13 Jahren

Und das zweite Feld:

6.911 Beiträge seit 2009
vor 13 Jahren

Hallo,

probier mal ein simples Programm.


using System;

namespace Test
{
	class Program
	{
		static void Main(string[] args)
		{
			try
			{
				Console.WriteLine("Hallo.");
			}
			catch (Exception ex)
			{
				Console.WriteLine(ex);
			}
		}
	}
}

Lass diese von der Command-Prompt aus laufen. Wenn dieses läuft ist dein Programm fehlerhaft 😉
Wenn das auch nicht läuft ist nicht das korrekte Framework installiert.
Wenn etwas anderes als "Hallo" in der Console erscheint poste diesen Text.

mfG Gü

Stellt fachliche Fragen bitte im Forum, damit von den Antworten alle profitieren. Daher beantworte ich solche Fragen nicht per PM.

"Alle sagten, das geht nicht! Dann kam einer, der wusste das nicht - und hat's gemacht!"

1
1blankz7 Themenstarter:in
11 Beiträge seit 2010
vor 13 Jahren

Also das läuft.
Also liegt es doch an meinem Programm. Muss ich nach etwas bestimmten suchen oder kommt es immer darauf an, was mein Programm überhaupt macht?

6.911 Beiträge seit 2009
vor 13 Jahren

Hallo,

oder kommt es immer darauf an, was mein Programm überhaupt macht?

Ja, aber das hast du bisher nicht verraten. Bitte beachte auch [Hinweis] Wie poste ich richtig? Punkt 5

Schau dir auch das Thema Exceptions mal an (in meinem obigen Bsp. sehr einfach gehalten). Aber wenn du try-catch einbaust siehs du welcher Fehler auftritt.

Muss ich nach etwas bestimmten suchen

Wenns auf dem Entwicklungsrechner rennt und sonst nicht muss die Ursache irgendwo im Unterschied zwischen beiden Rechnern liegen 😉

mfG Gü

Stellt fachliche Fragen bitte im Forum, damit von den Antworten alle profitieren. Daher beantworte ich solche Fragen nicht per PM.

"Alle sagten, das geht nicht! Dann kam einer, der wusste das nicht - und hat's gemacht!"

6.862 Beiträge seit 2003
vor 13 Jahren

Hallo,

geb einfach mal die Debug Version weiter. Dann bekommst du ausführlichere Infos wo das Problem liegt.

Baka wa shinanakya naoranai.

Mein XING Profil.

5.742 Beiträge seit 2007
vor 13 Jahren

Hallo 1blankz7,

baue mal in dein Programm eine ordentliche Fehlerbehandlung ein.

Das heißt, abonniere AppDomain.Current.UnhandledException sowie Application.ThreadException (oder so ähnlich) und fange Exceptions generell in der Main-Methode sämtliche Exceptions ab . Dann kannst du unbehandelte Fehler entsprechend ausgeben (via Exception.ToString, damit auch der StackTrace dabei ist).

1
1blankz7 Themenstarter:in
11 Beiträge seit 2010
vor 13 Jahren

Hier ist erstmal die Debug-Version.

winSarp93: Muss mir erstmal durchlesen, was ich genau mit den Methoden machen muss. Hab bis jetzt nur allgemeine Exceptions abgefangen, wenn ich außerhalb meines Programmes arbeite, also Dateizugriffe und so weiter.

Hinweis von gfoidl vor 13 Jahren

Bitte beachte auch [Hinweis] Wie poste ich richtig? Punkt 4c, 4.1

Dir wurden schon Hinweise gegeben. Die Fehlersuche ist nicht die Aufgabe des Forums.

1
1blankz7 Themenstarter:in
11 Beiträge seit 2010
vor 13 Jahren

Entschuldigung wenn ich es falsch verstanden habe, aber ein Forumsmitglied hat geschrieben, das ich die Debugversion weitergeben soll.

5.742 Beiträge seit 2007
vor 13 Jahren

Entschuldigung wenn ich es falsch verstanden habe, aber ein Forumsmitglied hat geschrieben, das ich die Debugversion weitergeben soll.

Ja - aber nicht an uns, sondern an den entsprechenden PC 😉

1
1blankz7 Themenstarter:in
11 Beiträge seit 2010
vor 13 Jahren

Achso,
da kommt der gleiche Fehler, wie bei der Releaseversion.

F
155 Beiträge seit 2009
vor 13 Jahren

Hallo,

ist auf dem andern PC der Access Datenbankprovider installiert?

fz

"We better hurry up and start coding, there are going to be a lot of bugs to fix."

1
1blankz7 Themenstarter:in
11 Beiträge seit 2010
vor 13 Jahren

Also es ist Access installiert und ich kann auch aus dem explorer heraus uf die Datenbank zugreifen.

Beschreibung des Programmes:
Eigentlich soll das Programm auf die Datenbank zugreifen und alle Bestände aus der Datenbank in ein DataGrid laden. dann kann man mittels ISBN neue Bücher hinzufügen. Die Daten werden dann automatisch aus dem Internet geladen und in der Datenbank gespeichert. Aber soweit kommt es ja nicht.

Da fällt mir ein, dass gleich beim Start die Datenbank angesprochen wird. ich ändere das mal ab.

3.825 Beiträge seit 2006
vor 13 Jahren

Hallo blankz,

hier hatte ich schonmal einige Gründe gesammelt, wieso ein Programm nicht auf einem anderen Rechner läuft :

.EXE läuft auf Entwicklungsrechner, aber nicht auf anderem PC

Probier mal auf anderen Rechnern.

Grüße Bernd

PS.: Bei mir läuft Dein Programm auch nicht. Schick mir mal deine program.cs

Workshop : Datenbanken mit ADO.NET
Xamarin Mobile App : Finderwille Einsatz App
Unternehmenssoftware : Quasar-3

1
1blankz7 Themenstarter:in
11 Beiträge seit 2010
vor 13 Jahren

Hab mal die Verbindung zur Datenbank gekapselt. Es funktioniert immer noch nicht. Also ist zumindest die Verbindung zur Datenbank nicht alleine Schuld.

223 Beiträge seit 2009
vor 13 Jahren

Zeig doch mal die detaillierte Fehlermeldung unter "Inhalt der Fehlerberichterstattung ansehen".

Ich kann mir eigentlich nur vorstellen dass der Fehler in dieser Methode auftritt:


public void aktualisieren()
{
OleDbConnection con = new OleDbConnection();
OleDbCommand cmd = new OleDbCommand();
con.ConnectionString = @"Provider=Microsoft.ACE.OLEDB.12.0;Data Source=db\biboteka_db.accdb";
cmd.Connection = con;
cmd.CommandText = "select * from buch";
try
{
con.Open();
OleDbDataReader reader = cmd.ExecuteReader();
this.dgvListe.Rows.Clear();
while (reader.Read())
{
this.dgvListe.Rows.Add(new object[] { reader["titel"], reader["autor"], reader["verlag"], reader["isbn13"], reader["art"], reader["genre"], reader["jahr"] });
}
reader.Close();
con.Close();
}
catch (Exception ex)
{
MessageBox.Show(ex.Message, "Fehler";);
}
this.tslAnzahl.Text = "Anzahl der B\x00fccher in der Datenbank: " + this.dgvListe.DisplayedRowCount(true);
}

die du aus den Event-Handlern aufrufst:

private void Form1_Activated(object sender, EventArgs e)
{
this.aktualisieren();
}
private void Form1_Load(object sender, EventArgs e)
{
this.aktualisieren();
this.cbbWahl.Items.Add("Titel";);
this.cbbWahl.Items.Add("Autor";); this.cbbWahl.Items.Add("Genre";);
}

im Konstruktor und in der Program.cs müsste alles soweit passen.

Bei mir hats ohne Fehler funktioniert!

F
10.010 Beiträge seit 2004
vor 13 Jahren

Wobei die gesamten DB Zugriffe zeigen wie man es nicht machen sollte.

  1. Niemals Parameter in SqlStrings frickeln. [Artikelserie] Parameter von SQL Befehlen

  2. Niemals die Daten direkt in UI Elementen hosten, gerade für die angedachte Aufgabe ist der DataAdapter mit einer DataTable viel einfacher.

1
1blankz7 Themenstarter:in
11 Beiträge seit 2010
vor 13 Jahren

Vielen Dank schon mal für die vielen Hilfestellungen und Hinweise.

Wie ich ja am Anfang bereits erwähnt habe, besitze ich derzeit nur rudimentäre Kenntnisse im Programmieren. Hab halt erst vor 4 Wochen angefangen. Daher hatte ich mich mit sicherlich besseren Lösungen und Möglichkeiten für die Aufgaben, noch nicht beschäfftigt, sondern war froh, erstmal auf dem, in meinen Augen, richtigen Weg gewesen zu sein.

Pico1184: Mittlerweile bekomme ich die Fehlermeldung nicht mehr provoziert. Es erscheint der Debugger von VS 2010 und sagt, das eine TargetInvocationException nicht behandelt wurde.
Du kannst das Programm ohne Probleme ausführen? Ohne es vorher neu zu compilieren?

3.430 Beiträge seit 2007
vor 13 Jahren

Hallo 1blankz7,

Mittlerweile bekomme ich die Fehlermeldung nicht mehr provoziert. Es erscheint der Debugger von VS 2010 und sagt, das eine TargetInvocationException nicht behandelt wurde.

Was steht denn in der InnerException?
Dort findet man oft die nötige Information wieso und weshalb es zur Exception kommt.

Ansonsten würde ich einfach mal damit beginnen die Exceptions mit try-catch abzufangen und den fehlerhaften Bereich somit einzugrenzen.

Dann fängst du an relevante Codeteile auszukommentieren bis das Problem nicht mehr auftretet.

Bitte beachte: [Hinweis] Wie poste ich richtig? 1.1 und 1.1.1

Gruss
Michael

1
1blankz7 Themenstarter:in
11 Beiträge seit 2010
vor 13 Jahren

Da stand bei den ersten malen nur, das man nicht auf den Code zugreifen kann.
Dann hatte ich es durch try-catch-Blöcke eingegrenzt. Der Fehler lag in der Initialisierung des Hauptformulars. Folgender Fehler ist dann noch erschienen:

Informationen über das Aufrufen von JIT-Debuggen
anstelle dieses Dialogfelds finden Sie am Ende dieser Meldung.

************** Ausnahmetext **************
System.Reflection.TargetInvocationException: Ein Aufrufziel hat einen Ausnahmefehler verursacht. ---> System.ComponentModel.Win32Exception: Falscher Parameter
bei System.Drawing.Icon.Initialize(Int32 width, Int32 height)
bei System.Drawing.Icon..ctor(SerializationInfo info, StreamingContext context)
--- Ende der internen Ausnahmestapelüberwachung ---
bei System.RuntimeMethodHandle._SerializationInvoke(IRuntimeMethodInfo method, Object target, SignatureStruct& declaringTypeSig, SerializationInfo info, StreamingContext context)
bei System.Runtime.Serialization.ObjectManager.CompleteISerializableObject(Object obj, SerializationInfo info, StreamingContext context)
bei System.Runtime.Serialization.ObjectManager.FixupSpecialObject(ObjectHolder holder)
bei System.Runtime.Serialization.ObjectManager.DoFixups()
bei System.Runtime.Serialization.Formatters.Binary.ObjectReader.Deserialize(HeaderHandler handler, __BinaryParser serParser, Boolean fCheck, Boolean isCrossAppDomain, IMethodCallMessage methodCallMessage)
bei System.Runtime.Serialization.Formatters.Binary.BinaryFormatter.Deserialize(Stream serializationStream, HeaderHandler handler, Boolean fCheck, Boolean isCrossAppDomain, IMethodCallMessage methodCallMessage)
bei System.Resources.ResourceReader.DeserializeObject(Int32 typeIndex)
bei System.Resources.ResourceReader._LoadObjectV2(Int32 pos, ResourceTypeCode& typeCode)
bei System.Resources.ResourceReader.LoadObjectV2(Int32 pos, ResourceTypeCode& typeCode)
bei System.Resources.ResourceReader.LoadObject(Int32 pos, ResourceTypeCode& typeCode)
bei System.Resources.RuntimeResourceSet.GetObject(String key, Boolean ignoreCase, Boolean isString)
bei System.Resources.RuntimeResourceSet.GetObject(String key, Boolean ignoreCase)
bei System.Resources.ResourceManager.GetObject(String name, CultureInfo culture, Boolean wrapUnmanagedMemStream)
bei System.Resources.ResourceManager.GetObject(String name)
bei BiBoTeKa.frmBearbeiten.InitializeComponent()
bei BiBoTeKa.frmBearbeiten..ctor()
bei BiBoTeKa.frmVerwalten.dgvListe_CellDoubleClick(Object sender, DataGridViewCellEventArgs e)
bei System.Windows.Forms.DataGridView.OnCellDoubleClick(DataGridViewCellEventArgs e)
bei System.Windows.Forms.DataGridView.OnDoubleClick(EventArgs e)
bei System.Windows.Forms.Control.WmMouseUp(Message& m, MouseButtons button, Int32 clicks)
bei System.Windows.Forms.Control.WndProc(Message& m)
bei System.Windows.Forms.DataGridView.WndProc(Message& m)
bei System.Windows.Forms.Control.ControlNativeWindow.OnMessage(Message& m)
bei System.Windows.Forms.Control.ControlNativeWindow.WndProc(Message& m)
bei System.Windows.Forms.NativeWindow.Callback(IntPtr hWnd, Int32 msg, IntPtr wparam, IntPtr lparam)

************** Geladene Assemblys ************** mscorlib Assembly-Version: 4.0.0.0. Win32-Version: 4.0.30319.1 (RTMRel.030319-0100). CodeBase: file:///C:/WINDOWS/Microsoft.NET/Framework/v4.0.30319/mscorlib.dll.

BiBoTeKa Assembly-Version: 1.0.0.0. Win32-Version: 1.0.0.0. CodeBase: file:///D:/Temp/BiBoTeKa.exe.

System.Windows.Forms Assembly-Version: 4.0.0.0. Win32-Version: 4.0.30319.1 built by: RTMRel. CodeBase: file:///C:/WINDOWS/Microsoft.Net/assembly/GAC_MSIL/System.Windows.Forms/v4.0_4.0.0.0__b77a5c561934e089/System.Windows.Forms.dll.

System.Drawing Assembly-Version: 4.0.0.0. Win32-Version: 4.0.30319.1 built by: RTMRel. CodeBase: file:///C:/WINDOWS/Microsoft.Net/assembly/GAC_MSIL/System.Drawing/v4.0_4.0.0.0__b03f5f7f11d50a3a/System.Drawing.dll.

System Assembly-Version: 4.0.0.0. Win32-Version: 4.0.30319.1 built by: RTMRel. CodeBase: file:///C:/WINDOWS/Microsoft.Net/assembly/GAC_MSIL/System/v4.0_4.0.0.0__b77a5c561934e089/System.dll.

System.Windows.Forms.resources Assembly-Version: 4.0.0.0. Win32-Version: 4.0.30319.1 built by: RTMRel. CodeBase: file:///C:/WINDOWS/Microsoft.Net/assembly/GAC_MSIL/System.Windows.Forms.resources/v4.0_4.0.0.0_de_b77a5c561934e089/System.Windows.Forms.resources.dll.

mscorlib.resources Assembly-Version: 4.0.0.0. Win32-Version: 4.0.30319.1 (RTMRel.030319-0100). CodeBase: file:///C:/WINDOWS/Microsoft.Net/assembly/GAC_MSIL/mscorlib.resources/v4.0_4.0.0.0_de_b77a5c561934e089/mscorlib.resources.dll.

System.Data Assembly-Version: 4.0.0.0. Win32-Version: 4.0.30319.1 (RTMRel.030319-0100). CodeBase: file:///C:/WINDOWS/Microsoft.Net/assembly/GAC_32/System.Data/v4.0_4.0.0.0__b77a5c561934e089/System.Data.dll.

System.Core Assembly-Version: 4.0.0.0. Win32-Version: 4.0.30319.1 built by: RTMRel. CodeBase: file:///C:/WINDOWS/Microsoft.Net/assembly/GAC_MSIL/System.Core/v4.0_4.0.0.0__b77a5c561934e089/System.Core.dll.

System.Configuration Assembly-Version: 4.0.0.0. Win32-Version: 4.0.30319.1 (RTMRel.030319-0100). CodeBase: file:///C:/WINDOWS/Microsoft.Net/assembly/GAC_MSIL/System.Configuration/v4.0_4.0.0.0__b03f5f7f11d50a3a/System.Configuration.dll.

System.Xml Assembly-Version: 4.0.0.0. Win32-Version: 4.0.30319.1 built by: RTMRel. CodeBase: file:///C:/WINDOWS/Microsoft.Net/assembly/GAC_MSIL/System.Xml/v4.0_4.0.0.0__b77a5c561934e089/System.Xml.dll.

System.Transactions Assembly-Version: 4.0.0.0. Win32-Version: 4.0.30319.1 (RTMRel.030319-0100). CodeBase: file:///C:/WINDOWS/Microsoft.Net/assembly/GAC_32/System.Transactions/v4.0_4.0.0.0__b77a5c561934e089/System.Transactions.dll.

System.EnterpriseServices Assembly-Version: 4.0.0.0. Win32-Version: 4.0.30319.1 (RTMRel.030319-0100). CodeBase: file:///C:/WINDOWS/Microsoft.Net/assembly/GAC_32/System.EnterpriseServices/v4.0_4.0.0.0__b03f5f7f11d50a3a/System.EnterpriseServices.dll.

************** JIT-Debuggen **************
Um das JIT-Debuggen (Just-In-Time) zu aktivieren, muss in der
Konfigurationsdatei der Anwendung oder des Computers
(machine.config) der jitDebugging-Wert im Abschnitt system.windows.forms festgelegt werden.
Die Anwendung muss mit aktiviertem Debuggen kompiliert werden.

Zum Beispiel:

<configuration>
<system.windows.forms jitDebugging="true" />
</configuration>

Wenn das JIT-Debuggen aktiviert ist, werden alle nicht behandelten
Ausnahmen an den JIT-Debugger gesendet, der auf dem
Computer registriert ist, und nicht in diesem Dialogfeld behandelt.

Ich hab dann mal probehalber das Icon gelöscht und nun läuft das Programm ohne Probleme.

Also vielen Dank an alle. Werde dann mal die ganzen Hinweise umsetzen und das Programm neu schreiben.
Also vielen Dank nochmal.