Wie erzeuge ich im VS 2005.net eine DLL/OCX fĂĽr Navision

Bild Fragen zu Integrationsproblemen anderer Programme in die Microsoft Dynamics Produkte

Beitragvon SilverX » 10. März 2008 17:50

Ahh, ok. Hast du analog die Schritte zur C# DLL geprĂĽft? Und auch fĂĽr die NAV Variable die Events aktiviert (Eigenschaften der Variablen)?
Cheers
Carsten


This post is my own opinion and does not necessarily reflect the opinion or view of my employer.
SilverX
Microsoft Partner
Microsoft Partner
 
Beiträge: 1252
Registriert: 16. September 2006 14:07
Realer Name: Carsten Scholling
Arbeitsort: GĂĽtersloh
Bezug zu Microsoft Dynamics: Microsoft Partner
Microsoft Dynamics Produkt: Microsoft Dynamics NAV
Microsoft Dynamics Version: 2013+

Beitragvon Eipel » 10. März 2008 18:02

ja die NAV die Events in der Variable ist aktiviert.

Nein mit C# kenne ich mich nicht aus.

aber der Vergleich zu VB.Net und VB6.0 passt.
Das Tool geht soweit auch, er wirft mir auch die Daten in eine Msg Box aus. Landet nur nicht in NAV
Eipel
 
Beiträge: 5
Registriert: 10. März 2008 10:28
Wohnort: Minden

Beitragvon SilverX » 12. März 2008 20:50

Hallo Eipel,

sorry, hab nicht wirklich realisiert, dass du von VB6 sprachst, obwohl es groĂź und breit da stand. Damit hab ich noch keine COM DLLs gebaut. Denke aber, dass es eigentlich straight forward sein sollte.

Sorry wenn ich so spät was dazu schreibe und dir in dem Punkt nicht wirklich weiter helfen kann. Solltest du bereits eine Lösung haben, dann interessiert das vielleicht auch andere und du könntest uns teilhaben lassen...
Cheers
Carsten


This post is my own opinion and does not necessarily reflect the opinion or view of my employer.
SilverX
Microsoft Partner
Microsoft Partner
 
Beiträge: 1252
Registriert: 16. September 2006 14:07
Realer Name: Carsten Scholling
Arbeitsort: GĂĽtersloh
Bezug zu Microsoft Dynamics: Microsoft Partner
Microsoft Dynamics Produkt: Microsoft Dynamics NAV
Microsoft Dynamics Version: 2013+

VB DLL

Beitragvon Eipel » 13. März 2008 10:47

Hallo SilverX,

danke nochmal fĂĽr die MĂĽhe.

Hier der Hintergrund:

Ich habe ein ActiveX in VB 6.0 fĂĽr RFID Antennen geschrieben.
Ich haben festgestellt, dass die eingebundene MSComm nicht 100% Multitasking fähig auf Citrix Server, sprich Terminalserver ist.
Wir fragen fĂĽr 6 Werken in ganz Deutschlang ca. 500.000 RFID Chips pro Tag mit RFID Antennen in Echtzeit ab.
Die Antennen sind mit unserem Navision 4 auf dem Citrixserver Farm ĂĽber die ActiveX verbunden.

Das funktioniert auch tadellos!

Mein Problem ist einfach das wir ĂśbersprĂĽnge an den Antennen haben. Jede Antenne hat ihre eigene ActiveX und Anwendung in Navision (Alles Saber getrennt).
Es ist nur so, dass mache ca. 1-2 % RFID Chips in den nicht zugehörigen Tabellen landen.

Ich habe in Foren gelesen, dass .net die Kanäle auf dem Terminalserver sauber trennt. Daher meine Programmierung in VB.Net. Was nicht wirklich läuft :-)

Ich habe aber schon angefangen es in C# zu versuchen. Wenn ich die Anwendung fertig habe werde ich das Forum informieren.

Vielen Dank nochmal!

GruĂź
Eipel
Eipel
 
Beiträge: 5
Registriert: 10. März 2008 10:28
Wohnort: Minden

Beitragvon dr » 10. Juni 2008 16:32

hi. ich habe noch absolut keine erfahrung zu dem thema hier und wĂĽrde gerne mehr wissen. daher wollte ich einfach mal das was SilverX direkt am anfang beschrieben hat durchspielen, habe aber irgendwie probleme, da ich meine DLL unter navision nirgends finden kann?!

vorweg: ich hab nen windows xp 64 und visual studio 2008

was ich bisher getan habe:
1. projekt erstellt, code ĂĽbernommen, "build" gemacht
2. befehle fĂĽr com registrieren ausgefĂĽhrt
-> Types registered successfully - Assembly exported to '[...]\NavDll.tlb', and the type library was registered successfully
3.gac kopieren entsprechend ausgefĂĽhrt, wobei mein gacutil unter ...Microsoft SDKs\Windows\v6.0A\Bin liegt.
-> Assembly successfully added to the cache

Im Dynamics Nav unter Custom Controls kann ich aber nichts entsprechendes finden, so dass ich auch keine entsprechende Global Automation einbinden kann...
Benutzeravatar
dr
Microsoft Partner
Microsoft Partner
 
Beiträge: 168
Registriert: 17. April 2008 10:17
Realer Name: Daniel
Arbeitsort: WĂĽrzburg
Bezug zu Microsoft Dynamics: Microsoft Partner
Microsoft Dynamics Produkt: Microsoft Dynamics NAV
Microsoft Dynamics Version: "blau" - 2016

Beitragvon SilverX » 10. Juni 2008 21:33

Die wirst du bei den Custom Controls nicht finden. Leg mal irgendwo eine Variable vom Typ Automation an und schau, ob du da mit F6 -> F6 fĂĽndig wirst.

Sollte ich falsch liegen, dann kann es bei dem x64 System noch daran liegen, dass du eine x64 Version compiliert hast, NAV aber 32-bit erwartet. Ggf. müssen auch beide Versionen im GAC liegen. Ich gebe zu, damit hab ich mich noch nicht so ausgiebig beschäftigt. Bisher liefen bei mir immer die 32-bit Varianten.
Cheers
Carsten


This post is my own opinion and does not necessarily reflect the opinion or view of my employer.
SilverX
Microsoft Partner
Microsoft Partner
 
Beiträge: 1252
Registriert: 16. September 2006 14:07
Realer Name: Carsten Scholling
Arbeitsort: GĂĽtersloh
Bezug zu Microsoft Dynamics: Microsoft Partner
Microsoft Dynamics Produkt: Microsoft Dynamics NAV
Microsoft Dynamics Version: 2013+

Beitragvon dr » 11. Juni 2008 11:50

danke fĂĽr die antwort: es geht :)
ein wenig verwundet bin ich ja schon, ich war der meinung es schon vorher mit einer Automation versucht zu haben.

dennoch fehlt mir wirklich wissen/verständis im allgemeineren umfang. gibt es zu dem thema irgendwelche empfehlenswerte bücher/papers? für so fragen die nach diesem thread bei mir sofort aufkommen, wie...
- sowas wie GAC hab ich vorher nie gehört...
- woher weiß ich was für Guid´s oder DispId´s ich verwenden darf/muss/sollte?
- wieso hier zwingend ein Interface?
- was sind dann ĂĽberhaupt die "custom controls"?
- oder einfach allgemein zum thema dynamics nav und dll´s

grĂĽĂźe und nochmals danke, der thread hier ist echt super nĂĽtzlich
daniel
Benutzeravatar
dr
Microsoft Partner
Microsoft Partner
 
Beiträge: 168
Registriert: 17. April 2008 10:17
Realer Name: Daniel
Arbeitsort: WĂĽrzburg
Bezug zu Microsoft Dynamics: Microsoft Partner
Microsoft Dynamics Produkt: Microsoft Dynamics NAV
Microsoft Dynamics Version: "blau" - 2016

Beitragvon SilverX » 13. Juni 2008 07:26

Erstmal schön, dass es funktioniert :)

Den GAC (Global Assembly Cache) kannst du dir wie ein freigegebenes Verzeichnis vorstellen in dem .NET Assemblies liegen. Assemblies die im GAC installiert werden, müssen zwingend signiert sein mit einem Schlüssel. Man kann Assemblies auch in das Programmverzeichnis legen, ohne diese zu signieren oder in den GAC zu stellen. Dann können sie allerdings nur von der jeweiligen Anwendung benutzt werden und "verseuchen" die Installation.

Welche GUIDs du verwendest ist dir quasi freigestellt. Sie sollten allerdings immer global eindeutig sein, was GUIDs im allgemeinen sind (2^128 Möglichkeiten). Sie dienen rein der Identifikation. Genau so für die DispIDs. Diese sollten innerhalb der Assembly eindeutig sein.

Zu Interfaces findest du COM benötigt eine Beschreibung der jeweiligen Funktionen. Eine allgemeine Erlärung findest zu z.B. hier: COM Interfaces.

Custom Controls sind "native" ActiveX Controls. Diese findest du als .OCX im Dateisystem. Diese mĂĽssen nicht Instanziiert werden (CREATE()). WeiterfĂĽhrend ggf. Google.

Und nun muss ich erstmal arbeiten gehen :)
Cheers
Carsten


This post is my own opinion and does not necessarily reflect the opinion or view of my employer.
SilverX
Microsoft Partner
Microsoft Partner
 
Beiträge: 1252
Registriert: 16. September 2006 14:07
Realer Name: Carsten Scholling
Arbeitsort: GĂĽtersloh
Bezug zu Microsoft Dynamics: Microsoft Partner
Microsoft Dynamics Produkt: Microsoft Dynamics NAV
Microsoft Dynamics Version: 2013+

Beitragvon NAiV » 1. Juli 2008 09:38

Hallo,

ein sehr schöner Beitrag.
Hab aber noch Fragen zum Interface:
- Wozu brauche ich das Interface? (Ich vermute mal fĂĽr COM selbst, oder?).
- Kann ich die Events direkt in das Interface integrieren? Oder brauche ich das Interface und gehe in NAV trotzdem direkt ĂĽber die Klasse um auf die Events in NAV zuzugreifen ("WithEvents")?
Würde nämlich gerne in NAV nur das Interface sehen (Klasse nicht über COM sichtbar) und bräuchte aber auch im Interface die Events.
Oder anders gefragt, was ist der Standardweg in NAV? Bin kein C#/COM Experte, aber sind Interfaces nicht dazu da, damit man nicht direkt auf die Klasse geht?

Ich freue mich schon auf eure Antworten :-)

GruĂź
NAiV
NAiV
 
Beiträge: 1
Registriert: 1. Juli 2008 09:25

Beitragvon dr » 2. Juli 2008 11:34

die frage zu dem interface bezogen auf navision/com kann ich dir leider nicht wirklich beantworten.
zu deiner allgemeinen aussage "sind interfaces nicht dazu da, damit man nicht direkt auf die klasse geht" kann ich aber sagen, dass dies nicht der sinn von interfaces ist. interfaces spezifizieren halt nur methodensignaturen, aber keine logik an sich. damit kann man sicherstellen, dass klassen, die diese interfaces implementieren, auch wirklich alle gewünschten methoden bieten. man will einfach und effizient schnittstellen definieren können.
Benutzeravatar
dr
Microsoft Partner
Microsoft Partner
 
Beiträge: 168
Registriert: 17. April 2008 10:17
Realer Name: Daniel
Arbeitsort: WĂĽrzburg
Bezug zu Microsoft Dynamics: Microsoft Partner
Microsoft Dynamics Produkt: Microsoft Dynamics NAV
Microsoft Dynamics Version: "blau" - 2016

Re: Wie erzeuge ich im VS 2005.net eine DLL/OCX fĂĽr Navision

Beitragvon andyR » 19. November 2009 16:51

HI zusammen,

ich habe es so gemacht wie von SilverX beschrieben (haarklein Punkt fĂĽr Punkt)....jedoch erhalte ich folgende Fehlermeldung. Kann es irgendwie an .Net 3.5 liegen?

Folgende (wahscheinlich bekannte Fehlermeldung kommt):
fehler.gif

Ich bin fĂĽr jegliche Hilfe dankbar!!!
andyR
 
Beiträge: 51
Registriert: 27. Mai 2009 16:07
Realer Name: Andreas Rothmann

Re: Wie erzeuge ich im VS 2005.net eine DLL/OCX fĂĽr Navision

Beitragvon SilverX » 20. November 2009 08:23

Hallo Andy,

die Meldung sieht fĂĽr mich so aus, als wenn das Assembly zwar fĂĽr COM sichtbar ist (sieht man daran, dass in der Meldung die Klasse sauber dargestellt ist, aber nicht fĂĽr den Client im Zugriff, sprich, weder im Applikationsverzeichnis oder im GAC verfĂĽgbar.

PrĂĽfe bitte, ob sich dein Assembly im GAC unter C:\WINDOWS\assembly befindet. Falls nicht, dann benutz nochmal das gacutil.exe.
Cheers
Carsten


This post is my own opinion and does not necessarily reflect the opinion or view of my employer.
SilverX
Microsoft Partner
Microsoft Partner
 
Beiträge: 1252
Registriert: 16. September 2006 14:07
Realer Name: Carsten Scholling
Arbeitsort: GĂĽtersloh
Bezug zu Microsoft Dynamics: Microsoft Partner
Microsoft Dynamics Produkt: Microsoft Dynamics NAV
Microsoft Dynamics Version: 2013+

Re: Wie erzeuge ich im VS 2005.net eine DLL/OCX fĂĽr Navision

Beitragvon Joshua » 7. November 2019 09:43

Hallo liebe Community

Leider scheitere ich beim verwenden meiner eigenen COM Dll in NAV 2009 Classic Client. Ich konnte die DLL erstellen und erfoglreich registrieren, aber diese tauch untern den Automations im Classic Client einfach nicht auf.
Folgendes habe ich gemacht:
C# Class Libary Projekt mit folgenden Eigeschaften:
ProjectProperties.png

BuildProperties.png


Und mit folgendem Code:
Code: Alles auswählen
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Runtime.InteropServices;
using System.IO;

namespace PDFBase64Converter
{

    [ComVisible(true)]
    [Guid("6E61CB6E-CA65-4840-8B64-A0FED5063C72")]
    public interface IConverter
    {
        [DispId(0x8001)]
        string ConvertPDFToBase64(string inputFilePath);

        void ConvertBase64ToPDF(string base64, string outputFilePath);
    }

    [ClassInterface(ClassInterfaceType.None)]
    [ProgId("PDFBase64Converter")]
    [Guid("46785FD5-D11C-4760-B842-7659A800A599")]
    public class Converter : IConverter
    {
        public string ConvertPDFToBase64(string inputFilePath)
        {

            byte[] pdfBytes = File.ReadAllBytes(inputFilePath);
            string base64 = Convert.ToBase64String(pdfBytes);
            return base64;
        }

        public void ConvertBase64ToPDF(string base64, string outputFilePath)
        {
            byte[] bytes = Convert.FromBase64String(base64);
            File.WriteAllBytes(outputFilePath, bytes);
        }
    }
}


Danach habe ich mithilfe von folgenden Befehlen die DLL registriert:
Code: Alles auswählen
RegAsm.exe "D:\joshua\Workspace\dotNetLibaries\PDFBase64Converter\bin\Release\PDFBase64Converter.dll" /tlb:"D:\joshua\Workspace\dotNetLibaries\PDFBase64Converter\bin\Release\PDFBase64Converter.tlb"
gacutil.exe /i "D:\joshua\Workspace\dotNetLibaries\PDFBase64Converter\bin\Release\PDFBase64Converter.dll"

Das hat ohne Fehler funktioniert und die DLL werden auch im GAC von Windows angezeigt, ich habe auch extra sowohl eine X86 als auch eine Any CPU Version kompiliert und registriert.
COMAsseblies.jpg


Aber auch nach PC Neustart wird mir die DLL nicht bei den Automations im NAV 2009 Classic Client angezeigt:
AvaiableAutomations.jpg


Hat jemand eine Idee wieso die Automation nicht angezeigt wird oder was ich falsch geamcht habe?
Liebe GrĂĽsse
Joshua
Freundliche GrĂĽsse
Joshua
Joshua
 
Beiträge: 29
Registriert: 19. Februar 2018 15:10
Arbeitsort: Schweiz
Bezug zu Microsoft Dynamics: Microsoft Partner
Microsoft Dynamics Produkt: Microsoft Dynamics NAV
Microsoft Dynamics Version: NAV2009CC, NAV2017, NAV2018

Re: Wie erzeuge ich im VS 2005.net eine DLL/OCX fĂĽr Navision

Beitragvon fiddi » 7. November 2019 10:13

Hallo,

welches Dotnet Framework unterstĂĽtzt NAV 2009 eigentlich? Du hast da 3.5 drin, versuch es doch mal mit Version 2 und 32bit

GruĂź Fiddi
Wer aufhört besser zu werden, hat aufgehört gut zu sein. (frei nach Philip Rosenthal)
Frage beantwortet? Schreibe bitte [Gelöst] vor den Titel des ersten Beitrags.
Bitte erst suchen, dann fragen. Bitte beachte den kleinen Community-Knigge.
Kein Support per PN, Mail, IM oder Telefon! DafĂĽr ist dieses Forum da.
fiddi
Moderator
Moderator
 
Beiträge: 7091
Registriert: 9. Juni 2008 10:13
Realer Name: Hans Heinrich Fiddelke
Arbeitsort: Bremen
Bezug zu Microsoft Dynamics: Microsoft Partner
Microsoft Dynamics Produkt: Microsoft Dynamics NAV
Microsoft Dynamics Version: NAV2.6-aktuell

Re: Wie erzeuge ich im VS 2005.net eine DLL/OCX fĂĽr Navision

Beitragvon Joshua » 7. November 2019 11:25

Hallo Fiddi, vielen Dank fĂĽr den Input, NAV 2009 verwendet meines Wissens 3.5 (da auch zwingend 3.5 installiert werden muss das man ĂĽberhaupt den NAV Clinet Installieren kann).
Ich habe es aber jetzt trotzdem mal mit Version 2.0 kompiliert und neu registriert, funktioniert leider trotzdem nicht.
Freundliche GrĂĽsse
Joshua
Joshua
 
Beiträge: 29
Registriert: 19. Februar 2018 15:10
Arbeitsort: Schweiz
Bezug zu Microsoft Dynamics: Microsoft Partner
Microsoft Dynamics Produkt: Microsoft Dynamics NAV
Microsoft Dynamics Version: NAV2009CC, NAV2017, NAV2018

Re: Wie erzeuge ich im VS 2005.net eine DLL/OCX fĂĽr Navision

Beitragvon sweikelt » 7. November 2019 14:07

hi,

ich kann leider keinen hilfreichen Beitrag dazu verfassen, wollte aber aus purem Interesse wissen, warum du etwas fĂĽr 2009 programmierst?
Das soll absolut kein Vorwurf sein, allerdings stellt sich mir die Frage, ob die investierte Zeit vielleicht nicht in einem Upgrade besser aufgehoben wäre?
Benutzeravatar
sweikelt
Microsoft Partner
Microsoft Partner
 
Beiträge: 1776
Registriert: 18. November 2010 10:15
Wohnort: Oschatz
Realer Name: Stephan Weikelt
Arbeitsort: Berlin
Bezug zu Microsoft Dynamics: Microsoft Partner
Microsoft Dynamics Produkt: Microsoft Dynamics NAV
Microsoft Dynamics Version: 3-2018 | D365BC

Re: Wie erzeuge ich im VS 2005.net eine DLL/OCX fĂĽr Navision

Beitragvon jglathe » 7. November 2019 22:40

Nunja, also wir haben uns eine COM DLL schreiben lassen, *weil* wir ein Upgrade machen und wir auch andere Infrastruktur ändern, z.B. Saperion -> Doxis. Die DLL ersetzt das OCX womit das ECM angesprochen wird. In unserem Upgrade Szenario wandert viel Funktionalität aus NAV in andere Systeme. Führt dazu das wir im neuen NAV deutlich weniger Anpassungen haben werden. Nur muss man mehrere Migrationsschritte machen, weil der Patient muss ja am Leben bleiben.
In VS2017 (quasi aktuelles VS) sind die Anpassungen um eine Library auch COM Visible zu machen eher klein. Ich wĂĽrde empfehlen das aktuelle VS zu nehmen, scheint einfacher geworden zu sein. Die DLL selbst ist in unserem Fall .net 4.6.2 und arbeitet problemlos mit NAV2009 zusammen. ich schau morgen mal nach den Properties. Waren nicht viele.
jglathe
 
Beiträge: 496
Registriert: 5. Mai 2006 08:20
Wohnort: Falkensee
Realer Name: Jens Glathe
Arbeitsort: Berlin
Bezug zu Microsoft Dynamics: End-Anwender
Microsoft Dynamics Produkt: Microsoft Dynamics NAV
Microsoft Dynamics Version: blau..2018

Re: Wie erzeuge ich im VS 2005.net eine DLL/OCX fĂĽr Navision

Beitragvon martinst » 8. November 2019 11:54

Hallo

/codebase sollte das doch lösen?

Code: Alles auswählen
RegAsm.exe "D:\joshua\Workspace\dotNetLibaries\PDFBase64Converter\bin\Release\PDFBase64Converter.dll" /tlb:"D:\joshua\Workspace\dotNetLibaries\PDFBase64Converter\bin\Release\PDFBase64Converter.tlb"



Code: Alles auswählen
RegAsm.exe "D:\joshua\Workspace\dotNetLibaries\PDFBase64Converter\bin\Release\PDFBase64Converter.dll" /tlb:"D:\joshua\Workspace\dotNetLibaries\PDFBase64Converter\bin\Release\PDFBase64Converter.tlb" [b]/codebase[/b]
martinst
 
Beiträge: 621
Registriert: 24. August 2005 18:27
Bezug zu Microsoft Dynamics: Microsoft Partner
Microsoft Dynamics Produkt: Microsoft Dynamics NAV
Microsoft Dynamics Version: 2.x, 3.x, 4.x, 5.x, 2009

Re: Wie erzeuge ich im VS 2005.net eine DLL/OCX fĂĽr Navision

Beitragvon DaMu-DevX » 17. Dezember 2019 13:34

Moin @Joshua,

Schau bei den Automations in Navision doch bitte nach dem Text, den du in den Projekteigenschaften unter "Description" (also "Library for converting PDF to Base64") eingegeben hast. Dieses Feld scheint in den "Automation Server List" von Navision angezeigt zu werden (zumindest in meinem letzten Test, der gerade 3 Stunden her ist).

Kannst du darĂĽber deine Assembly finden?
DaMu-DevX
 
Beiträge: 1
Registriert: 17. Dezember 2019 13:30
Realer Name: Daniel
Arbeitsort: Endkunde
Bezug zu Microsoft Dynamics: End-Anwender
Microsoft Dynamics Produkt: Microsoft Dynamics NAV
Microsoft Dynamics Version: 2009, 2018

Re: Wie erzeuge ich im VS 2005.net eine DLL/OCX fĂĽr Navision

Beitragvon Joshua » 17. Dezember 2019 13:48

DaMu-DevX hat geschrieben:Moin @Joshua,

Schau bei den Automations in Navision doch bitte nach dem Text, den du in den Projekteigenschaften unter "Description" (also "Library for converting PDF to Base64") eingegeben hast. Dieses Feld scheint in den "Automation Server List" von Navision angezeigt zu werden (zumindest in meinem letzten Test, der gerade 3 Stunden her ist).

Kannst du darĂĽber deine Assembly finden?


Herzlichen Dank, genau daran hats gelegen! Ich hatte das selbst mittlerweile dann festgestellt aber vergessen hier die Antwort zu posten. Ich habe in der Automation List immer nach dem Namen und nicht nach der Descirption gesucht. Als ich dann die GUID eingegeben habe in die Variable wurde mir dann die DLL angezeigt aber eben mit dem Text der Description.
Freundliche GrĂĽsse
Joshua
Joshua
 
Beiträge: 29
Registriert: 19. Februar 2018 15:10
Arbeitsort: Schweiz
Bezug zu Microsoft Dynamics: Microsoft Partner
Microsoft Dynamics Produkt: Microsoft Dynamics NAV
Microsoft Dynamics Version: NAV2009CC, NAV2017, NAV2018

Vorherige

ZurĂĽck zu Software-Integration

Wer ist online?

Mitglieder in diesem Forum: 0 Mitglieder und 1 Gast