{"id":280,"date":"2007-09-30T13:28:18","date_gmt":"2007-09-30T12:28:18","guid":{"rendered":"http:\/\/minibrain.wordpress.com\/2007\/09\/30\/managed-unmanaged-interop-unmanaged-dlls-in-assemblies-speichern\/"},"modified":"2007-09-30T13:28:18","modified_gmt":"2007-09-30T12:28:18","slug":"managed-unmanaged-interop-unmanaged-dlls-in-assemblies-speichern","status":"publish","type":"post","link":"https:\/\/abramowitsch.de\/blog\/?p=280","title":{"rendered":"Managed-Unmanaged InterOp: unmanaged DLLs in Assemblies speichern"},"content":{"rendered":"<p>Ich habe heute im Blog von <a target=\"_blank\" href=\"http:\/\/weblogs.asp.net\/ralfw\/\">Ralf Westphal <\/a>einen etwas \u00e4lteren, aber dennoch sehr interessanten <a target=\"_blank\" href=\"http:\/\/weblogs.asp.net\/ralfw\/archive\/2007\/02\/04\/single-assembly-deployment-of-managed-and-unmanaged-code.aspx\">Artikel<\/a> gelesen, der sich damit besch\u00e4ftigt wie man native C\/C++-DLLs in Assemblies unterbringen kann.<\/p>\n<p>Dabei wird zur Compile-Zeit einfach die unmanaged DLL als Ressource in die .NET Assembly eingebettet und dann zur Laufzeit wieder extrahiert und im Dateisystem gespeichert.<\/p>\n<p>Ein einfacher, aber dennoch cooler Trick, der das Deployment (vorzugsweise XCOPY-Deployment) f\u00fcr Interop-Applikationen vereinfacht.<\/p>\n<p>Eine \u00e4hnliche Vorgehensweise beschreibt auch Suzanne Cook in ihrem <a target=\"_blank\" href=\"http:\/\/blogs.msdn.com\/suzcook\/archive\/2004\/10\/28\/249280.aspx\">Blog<\/a>: Sie schl\u00e4gt vor, die unmanaged DLL als Teil einer Multi-File-Assembly abzulegen. Somit nimmt man den Vorteil der Versionierung von .NET Assemblies mit.<\/p>\n<p>Hier nochmal die Links zu den beiden Beitr\u00e4gen:<\/p>\n<p>Ralf Westphals Blogeintrag &#8222;Single Assembly Deployment of Managed and Unmanaged Code&#8220;:<br \/>\n<a href=\"http:\/\/weblogs.asp.net\/ralfw\/archive\/2007\/02\/04\/single-assembly-deployment-of-managed-and-unmanaged-code.aspx\">http:\/\/weblogs.asp.net\/ralfw\/archive\/2007\/02\/04\/single-assembly-deployment-of-managed-and-unmanaged-code.aspx<\/a><\/p>\n<p>Suzanne Cock&#8217;s Blogeintrag &#8222;Versioning\/Deploying Unmanaged Files&#8220;:<br \/>\n<a href=\"http:\/\/blogs.msdn.com\/suzcook\/archive\/2004\/10\/28\/249280.aspx\">http:\/\/blogs.msdn.com\/suzcook\/archive\/2004\/10\/28\/249280.aspx<\/a><\/p>\n","protected":false},"excerpt":{"rendered":"<p>Ich habe heute im Blog von Ralf Westphal einen etwas \u00e4lteren, aber dennoch sehr interessanten Artikel gelesen, der sich damit besch\u00e4ftigt wie man native C\/C++-DLLs in Assemblies unterbringen kann. Dabei wird zur Compile-Zeit einfach die unmanaged DLL als Ressource in die .NET Assembly eingebettet und dann zur Laufzeit wieder extrahiert und im Dateisystem gespeichert. Ein [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"jetpack_post_was_ever_published":false,"_jetpack_newsletter_access":"","_jetpack_dont_email_post_to_subs":false,"_jetpack_newsletter_tier_id":0,"_jetpack_memberships_contains_paywalled_content":false,"_jetpack_memberships_contains_paid_content":false,"footnotes":"","jetpack_publicize_message":"","jetpack_publicize_feature_enabled":true,"jetpack_social_post_already_shared":false,"jetpack_social_options":{"image_generator_settings":{"template":"highway","default_image_id":0,"font":"","enabled":false},"version":2}},"categories":[3,20],"tags":[126,55,89],"class_list":["post-280","post","type-post","status-publish","format-standard","hentry","category-net","category-visual-studio-net","tag-net","tag-interop","tag-unmanaged-code"],"jetpack_publicize_connections":[],"jetpack_featured_media_url":"","jetpack_sharing_enabled":true,"jetpack_shortlink":"https:\/\/wp.me\/p3Ug90-4w","_links":{"self":[{"href":"https:\/\/abramowitsch.de\/blog\/index.php?rest_route=\/wp\/v2\/posts\/280","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/abramowitsch.de\/blog\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/abramowitsch.de\/blog\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/abramowitsch.de\/blog\/index.php?rest_route=\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/abramowitsch.de\/blog\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=280"}],"version-history":[{"count":0,"href":"https:\/\/abramowitsch.de\/blog\/index.php?rest_route=\/wp\/v2\/posts\/280\/revisions"}],"wp:attachment":[{"href":"https:\/\/abramowitsch.de\/blog\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=280"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/abramowitsch.de\/blog\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=280"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/abramowitsch.de\/blog\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=280"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}