{"id":55000377,"date":"2023-08-01T00:00:00","date_gmt":"2023-09-14T15:36:59","guid":{"rendered":"http:\/\/access-im-unternehmen.aix-dev.de\/aiu\/?p=377"},"modified":"-0001-11-30T00:00:00","modified_gmt":"-0001-11-30T00:00:00","slug":"COMDLLs_und_AddIns_unter_VBNET_debuggen","status":"publish","type":"post","link":"https:\/\/vbentwickler.de\/COMDLLs_und_AddIns_unter_VBNET_debuggen\/","title":{"rendered":"COM-DLLs und Add-Ins unter VB.NET debuggen"},"content":{"rendered":"<p><img loading=\"lazy\" decoding=\"async\" src=\"http:\/\/vg08.met.vgwort.de\/na\/42a1625fd1974b538765dc6afd9a831f\" width=\"1\" height=\"1\" alt=\"\"><\/p>\n<p><b>Im Artikel &#8220;Office-VBA per COM-DLL mit VB.NET erweitern&#8221; und in einigen weiteren Artikel haben wir bereits gezeigt, wie man Visual Studio zum Erstellen von COM-DLLs und COM-Add-Ins nutzen kann. Im vorliegenden Artikel erg&auml;nzen wir die dort vorstellten Techniken zum Erstellen von COM-DLLs und COM-Add-Ins noch um die Vorgehensweise zum Debuggen des Codes dieser Projekte. W&auml;hrend WPF-Projekte oder Konsolenanwendungen sich von Visual Studio .NET starten und auch debuggen lassen, gelingt das bei COM-DLLs und COM-Add-Ins nicht so leicht. Es handelt sich dabei nicht um ausf&uuml;hrbare Dateien, also m&uuml;ssen wir einen kleinen Umweg gehen &#8211; und diesen beschreiben wir im vorliegenden Artikel.<\/b><\/p>\n<p>Wir beziehen uns in diesem Artikel zun&auml;chst auf die Beispiell&ouml;sung aus dem Artikel <b>Office-VBA per COM-DLL mit VB.NET erweitern <\/b>(<b>www.vbentwickler.de\/378<\/b>). Sp&auml;ter schauen wir uns noch an, wie das Debugging mit einem COM-Add-In aussieht.<\/p>\n<p>Wenn wir eine COM-DLL wie die aus dem genannten Artikel in Visual Studio .NET &ouml;ffnen und sie starten wollen, indem wir auf die <b>Starten<\/b>-Schaltfl&auml;che klicken oder die Taste <b>F5<\/b> bet&auml;tigen, erhalten wir die Meldung aus Bild 1. Wir m&uuml;ssen also einen anderen Weg finden, um unseren Code zu debuggen.<\/p>\n<p class=\"image\"><img decoding=\"async\" src=\"..\/fileadmin\/_temp_\/2023_04\/pic_377_001.png\" alt=\"Fehlermeldung beim Versuch, ein nicht ausf&uuml;hrbares Projekt zu starten\" width=\"424,6267\" height=\"219,0617\" \/><\/p>\n<p><b><span style=\"color:darkgrey;\">Bild 1: Fehlermeldung beim Versuch, ein nicht ausf&uuml;hrbares Projekt zu starten<\/span><\/b><\/p>\n<h2>Die Debuggen-Eigenschaften<\/h2>\n<p>Auch wenn die Anzahl der Programmierer, die COM-DLLs und COM-Add-Ins vergleichsweise &uuml;berschaubar sein d&uuml;rfte, so bietet Visual Studio auch f&uuml;r diese eine passende L&ouml;sung an. Diese finden wir in den Projekteigenschaften, die wir mit einem Doppelklick auf den Eintrag <b>My Project <\/b>im Projektmappen-Explorer &ouml;ffnen. Dort wechseln wir anschlie&szlig;end zum Bereich <b>Debuggen<\/b>, der zun&auml;chst wie in Bild 2 aussieht. <\/p>\n<p class=\"image\"><img decoding=\"async\" src=\"..\/fileadmin\/_temp_\/2023_04\/pic_377_002.png\" alt=\"Der Bereich Debuggen in den Projekteigenschaften\" width=\"649,627\" height=\"414,0308\" \/><\/p>\n<p><b><span style=\"color:darkgrey;\">Bild 2: Der Bereich Debuggen in den Projekteigenschaften<\/span><\/b><\/p>\n<h2>Konfiguration ausw&auml;hlen<\/h2>\n<p>Hier sehen wir verschiedene Optionen. Sollte die Eigenschaft <b>Konfiguration <\/b>einen anderen Wert als <b>Aktiv (Debug) <\/b>aufweisen, stellen wir diese nun auf diesen Wert ein.<\/p>\n<h2>Zu startende Anwendung festlegen<\/h2>\n<p>Im Bereich <b>Startaktion <\/b>geben wir an, welche Aktion durchgef&uuml;hrt werden soll. F&uuml;r uns sind die folgenden beiden interessant:<\/p>\n<ul>\n<li><b>Projekt starten<\/b>: Mit dieser Option wird das aktuelle Projekt gestartet, was nur bei ausf&uuml;hrbaren Projekten sinnvoll ist.<\/li>\n<li><b>Externes Programm starten<\/b>: Wenn das Projekt im Kontext einer anderen Anwendung verwendet werden soll, was bei COM-DLLs und COM-Add-Ins der Fall ist, geben wir den Pfad zu dieser Anwendung an.<\/li>\n<\/ul>\n<p>Wir k&ouml;nnen zum Beispiel Access, Excel, Outlook oder Word als externes Programm angeben. Dazu ben&ouml;tigen wir den Pfad zu dieser Anwendung, der sich je nach verwendeter Version unterscheiden kann.<\/p>\n<p>Die einfachste Methode, den Pfad zur ausf&uuml;hrbaren Datei f&uuml;r eine der Office-Anwendungen zu finden, ist ein Rechtsklick auf das Icon in der Taskleiste oder auf den Namen im Suchen-Bereich von Windows und das anschlie&szlig;ende Ausw&auml;hlen des Befehls <b>Eigenschaften<\/b> (siehe Bild 3).<\/p>\n<p class=\"image\"><img decoding=\"async\" src=\"..\/fileadmin\/_temp_\/2023_04\/pic_377_004.png\" alt=\"Anzeigen der Eigenschaften einer Office-Anwendung\" width=\"424,6267\" height=\"351,644\" \/><\/p>\n<p><b><span style=\"color:darkgrey;\">Bild 3: Anzeigen der Eigenschaften einer Office-Anwendung<\/span><\/b><\/p>\n<p>Anschlie&szlig;end k&ouml;nnen wir dem <b>Eigenschaften<\/b>-Dialog aus dem Textfeld <b>Ziel<\/b> den Pfad zur Anwendung entnehmen (siehe Bild 4).<\/p>\n<p class=\"image\"><img decoding=\"async\" src=\"..\/fileadmin\/_temp_\/2023_04\/pic_377_005.png\" alt=\"Eigenschaften einer Office-Anwendung\" width=\"349,6267\" height=\"490,248\" \/><\/p>\n<p><b><span style=\"color:darkgrey;\">Bild 4: Eigenschaften einer Office-Anwendung<\/span><\/b><\/p>\n<p>F&uuml;r Outlook lautet dieser beispielsweise:<\/p>\n<pre>C:\\Program Files (x86)\\Microsoft Office\\root\\Office16\\OUTLOOK.EXE<\/pre>\n<p>Die Pfade zu den &uuml;brigen Office-Anwendungen finden wir auf die gleiche Weise.<\/p>\n<h2>Debuggen starten<\/h2>\n<p>Damit haben wir bereits einen gro&szlig;en Schritt zum Debuggen getan. Wir k&ouml;nnen nun n&auml;mlich das Projekt starten, indem wir die Anwendung starten. Visual Studio tr&auml;gt f&uuml;r das Projekt nun die Informationen in die Registry ein, die dazu notwendig sind, dass die aufgerufene Anwendung auf die DLL zugreifen kann.<\/p>\n<p>Wenn wir beispielsweise Outlook angeben, wird anschlie&szlig;end Outlook gestartet und die DLL steht f&uuml;r die Nutzung bereit. Um diese einzusetzen, &ouml;ffnen wir nun unter Outlook den VBA-Editor (zum Beispiel mit <b>Alt + F11<\/b>). Dann k&ouml;nnen wir die zu debuggende COM-DLL im <b>Verweise<\/b>-Dialog ausw&auml;hlen (siehe Bild 5).<\/p>\n<p class=\"image\"><img decoding=\"async\" src=\"..\/fileadmin\/_temp_\/2023_04\/pic_377_006.png\" alt=\"Die COM-DLL im Verweise-Dialog\" width=\"424,6267\" height=\"334,749\"\/><\/p>\n<p><b><span style=\"color:darkgrey;\">Bild 5: Die COM-DLL im Verweise-Dialog<\/span><\/b><\/p>\n<p>Anschlie&szlig;end stehen die Funktionen der COM-DLL in einer neuen Prozedur in einem neuen Modul wie in Bild 6 zur Verf&uuml;gung.<\/p>\n<p class=\"image\"><img decoding=\"async\" src=\"..\/fileadmin\/_temp_\/2023_04\/pic_377_007.png\" alt=\"Nutzen der Elemente der COM-DLL\" width=\"424,6267\" height=\"244,977\"\/><\/p>\n<p><b><span style=\"color:darkgrey;\">Bild 6: Nutzen der Elemente der COM-DLL<\/span><\/b><\/p>\n<h2>Haltepunkt setzen<\/h2>\n<p>Bevor wir nun ausprobieren, ob das Debugging funktioniert, setzen wir einen Haltepunkt f&uuml;r die Methode <b>Beispielprozedur <\/b>im VB.NET-Projekt (siehe Bild 7). Das gelingt genau wie im VBA-Editor durch Anklicken des grauen Bereichs auf H&ouml;he der Zeile, die den Haltepunkt erhalten soll.<\/p>\n<p class=\"image\"><img decoding=\"async\" src=\"..\/fileadmin\/_temp_\/2023_04\/pic_377_008.png\" alt=\"Setzen eines Haltepunktes in Visual Studio\" width=\"574,6265\" height=\"267,8477\"\/><\/p>\n<p><b><span style=\"color:darkgrey;\">Bild 7: Setzen eines Haltepunktes in Visual Studio<\/span><\/b><\/p>\n<h2>Haltepunkt ausprobieren<\/h2>\n<div class=\"rcp_restricted\"><p><span style=\"color: #ff0000;\">M&ouml;chten Sie weiterlesen? Dann l&ouml;sen Sie Ihr Ticket!<\/span><br \/>\n<span style=\"color: #ff0000;\">Hier geht es zur Bestellung des Jahresabonnements des Magazins <strong>Visual Basic Entwickler<\/strong>:<\/span><br \/>\n<span style=\"color: #ff0000;\"><a style=\"color: #ff0000;\" href=\"https:\/\/shop.minhorst.com\/magazine\/363\/visual-basic-entwickler-jahresabonnement?c=77\">Zur Bestellung ...<\/a><\/span><br \/>\n<span style=\"color: #ff0000;\">Danach greifen Sie sofort auf <strong>alle rund 200 Artikel<\/strong> unseres Angebots zu - auch auf diesen hier!<\/span><br \/>\n<span style=\"color: #000000;\">Oder haben Sie bereits Zugangsdaten? Dann loggen Sie sich gleich hier ein:<\/span><\/p>\n<\/div>\n\n\t\n\t<form id=\"rcp_login_form\"  class=\"rcp_form\" method=\"POST\" action=\"https:\/\/vbentwickler.de\/data\/wp\/v2\/posts\/55000377\/\">\n\n\t\t\n\t\t<fieldset class=\"rcp_login_data\">\n\t\t\t<p>\n\t\t\t\t<label for=\"rcp_user_login\">Username or Email<\/label>\n\t\t\t\t<input name=\"rcp_user_login\" id=\"rcp_user_login\" class=\"required\" type=\"text\"\/>\n\t\t\t<\/p>\n\t\t\t<p>\n\t\t\t\t<label for=\"rcp_user_pass\">Password<\/label>\n\t\t\t\t<input name=\"rcp_user_pass\" id=\"rcp_user_pass\" class=\"required\" type=\"password\"\/>\n\t\t\t<\/p>\n\t\t\t\t\t\t<p>\n\t\t\t\t<input type=\"checkbox\" name=\"rcp_user_remember\" id=\"rcp_user_remember\" value=\"1\"\/>\n\t\t\t\t<label for=\"rcp_user_remember\">Remember me<\/label>\n\t\t\t<\/p>\n\t\t\t<p class=\"rcp_lost_password\"><a href=\"\/data\/wp\/v2\/posts\/55000377?rcp_action=lostpassword\"><\/a><\/p>\n\t\t\t<p>\n\t\t\t\t<input type=\"hidden\" name=\"rcp_action\" value=\"login\"\/>\n\t\t\t\t<input type=\"hidden\" name=\"rcp_redirect\" value=\"https:\/\/vbentwickler.de\/data\/wp\/v2\/posts\/55000377\/\"\/>\n\t\t\t\t<input type=\"hidden\" name=\"rcp_login_nonce\" value=\"c0e57e8619\"\/>\n\t\t\t\t<input id=\"rcp_login_submit\" class=\"rcp-button\" type=\"submit\" value=\"Login\"\/>\n\t\t\t<\/p>\n\t\t\t\t\t<\/fieldset>\n\n\t\t\n\t<\/form>\n<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Im Artikel &#8220;Office-VBA per COM-DLL mit VB.NET erweitern&#8221; und in einigen weiteren Artikel haben wir bereits gezeigt, wie man Visual Studio zum Erstellen von COM-DLLs und COM-Add-Ins nutzen kann. Im vorliegenden Artikel erg&auml;nzen wir die dort vorstellten Techniken zum Erstellen von COM-DLLs und COM-Add-Ins noch um die Vorgehensweise zum Debuggen des Codes dieser Projekjte. W&auml;hrend WPF-Projekte oder Konsolenanwendungen sich von Visual Studio .NET starten und auch debuggen lassen, gelingt das bei COM-DLLs und COM-Add-Ins nicht so leicht. Es handelt sich dabei nicht um ausf&uuml;hrbare Dateien, also m&uuml;ssen wir einen kleinen Umweg gehen &#8211; und diesen beschreiben wir im vorliegenden Artikel.<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"om_disable_all_campaigns":false,"_monsterinsights_skip_tracking":false,"_monsterinsights_sitenote_active":false,"_monsterinsights_sitenote_note":"","_monsterinsights_sitenote_category":0,"_uf_show_specific_survey":0,"_uf_disable_surveys":false,"footnotes":""},"categories":[662023,66042023,44000032],"tags":[],"yst_prominent_words":[],"class_list":["post-55000377","post","type-post","status-publish","format-standard","hentry","category-662023","category-66042023","category-VBNETProgrammierung"],"aioseo_notices":[],"_links":{"self":[{"href":"https:\/\/vbentwickler.de\/data\/wp\/v2\/posts\/55000377","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/vbentwickler.de\/data\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/vbentwickler.de\/data\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/vbentwickler.de\/data\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/vbentwickler.de\/data\/wp\/v2\/comments?post=55000377"}],"version-history":[{"count":0,"href":"https:\/\/vbentwickler.de\/data\/wp\/v2\/posts\/55000377\/revisions"}],"wp:attachment":[{"href":"https:\/\/vbentwickler.de\/data\/wp\/v2\/media?parent=55000377"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/vbentwickler.de\/data\/wp\/v2\/categories?post=55000377"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/vbentwickler.de\/data\/wp\/v2\/tags?post=55000377"},{"taxonomy":"yst_prominent_words","embeddable":true,"href":"https:\/\/vbentwickler.de\/data\/wp\/v2\/yst_prominent_words?post=55000377"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}