EPLAN-API

Alles rund um die API in EPLAN

EPLAN-API: Signierung automatisieren (Update 2)

Und täglich grüßt die EPLAN Signierung…

Meine Beschreibung hier, klappt leider nur wenn man eine DLL bzw. EXE hat. Es wird zwar alles richtig signiert, aber die Verweise werden nicht aktualisiert, da ist .NET schuld…

Tja, für die Meisten wird das kein Problem sein, aber ich arbeite immer mit verteilten Libraries.

Ich habe einen Weg gefunden der für mich OK ist. Bisl manuelle Arbeit hat man wenn man mehrere Keys signieren muss.
In der AssemblyInfo.cs  lege ich fest dass in der Release Konfiguration die Kompiler-Attribute für EPLAN gesetzt werden.

// EPLAN signing
#if TRACE && !DEBUG
using Eplan.EplApi.Starter;
[assembly: EplanSignedAssembly(true)]
[assembly: AssemblyKeyFile("2161_Public.snk")]
[assembly: AssemblyDelaySign(true)]
#endif

Das tolle ist, ich kann nach wie vor den Release Build testen, wenn ich das Trace Flag wegnehme.

Zusätzlich wird die Signierung wirklich erst von EPLAN gemacht… denn die Attribute reservieren nur den Speicher in den Assemblies. Somit kann man auch Extensions verwenden welche den Build beeinflussen wie Fody.PropertyChanged, welches bei mir immer mit WPF im Einsatz ist.

Mir ist beim Bauen einer Offline-Application auch noch was aufgefallen:
Werden externe Assemblies verwendet, achtet darauf das diese strong namend signiert sind. Sonst könnt Ihr Sie nicht verwenden. Ich nutze zum Glück ausschließlich OpenSource Lösungen… denn eine davon war nicht signiert und ich musste es dann mit dem EPLAN KeyFile selbst machen, was ich ja konnte da Code vorhanden ist :^)

Vielen Dank an der Stelle, mal wieder, an den tollen EPLAN API Support, der mir hier wieder freundlich zur Seite stand!

Von |2019-03-14T08:39:03+01:002017-11-09|EPLAN, EPLAN-API|

EPLAN-API: Signierung automatisieren (Update 1)

Ich hatte hier ja mal was ausprobiert… aber so ganz zufrieden war ich da nicht:

  1. Es kann nur ein Keyfile angegeben werden
  2. Irgendwas da in der Projektdatei rumschreiben macht nur Probleme

Nun hab ich mir das nochmal angeschaut und eine Lösung gefunden. Per Kommandozeile kann man die DLLs in IL Code umwandeln und dann neu kompilieren mit Keyfile. Achtet darauf dass die Ausgabepfade auch alle vorhanden sind.

"C:\Program Files (x86)\Microsoft SDKs\Windows\v10.0A\bin\NETFX 4.6.1 Tools\ildasm.exe" "C:\Testprojekt\bin\Release\Suplanus.Test.EplAddIn.Template.dll" /all /out="C:\Testprojekt\bin\Release\Signed\Suplanus.Test.EplAddIn.Template.il"
"C:\Windows\Microsoft.NET\Framework\v4.0.30319\ilasm.exe" "C:\Testprojekt\Signed\Suplanus.Test.EplAddIn.Template.il" /dll /key:"C:\Testprojekt\Build\Keyfiles\MyKeyFile.snk"

Im Signed Ordner findet ihr dann die signierte DLL. Diese dann bei EPLAN hochladen und das wars.

Von |2017-11-07T16:37:57+01:002017-11-08|EPLAN, EPLAN-API|

EPLAN Offline Console Application

Bin schon paar mal selbst drüber gestolpert, darum hier eine Notiz an mich selbst:
Will man eine EPLAN Offline Anwendung als Konsolenapplikation erstellen muss die Main()  Methode mit dem Compiler Attribut [STAThread]  ausgestattet werden:

using System;
using System.IO;
using System.Linq;
using Suplanus.Sepla.Application;

namespace ibKastl.Meco.Test.Console
{
    class Program
    {
        [STAThread]
        static void Main(string[] args)
        {
            // Start EPLAN
            System.Console.WriteLine("Starting EPLAN...");
            string binPath = Starter.GetEplanInstallations()
                .Last(obj => obj.EplanVariant
                .Equals("Electric P8"))
                .EplanPath;
            binPath = Path.GetDirectoryName(binPath);
            EplanOffline eplanOffline = new EplanOffline(binPath, "API");
            eplanOffline.StartWithoutGui();

            // Close
            eplanOffline.Close();           
            System.Console.ReadKey();
        }
    }
}

 

Hab das auch noch in den Kommentar der Starter gepackt:

Von |2017-11-07T07:09:10+01:002017-11-07|EPLAN, EPLAN-API|

CustomItemType

Aus der Rubrik “Ich bau mir die Artikelverwaltung wie Sie mir gefällt…”, wieder eine nicht offizielle Möglichkeit die Artikelverwaltung zu erweitern (kein Support von EPLAN). Nämlich über eine eigene Objekt Art. Weiß garnicht wie man ItemType in dem Kontext korrekt übersetzt.

Naja schaut euch mal das Video an, den Code findet ihr auf GitHub.

Von |2017-10-24T14:49:39+02:002017-10-24|EPLAN, EPLAN-API|
Nach oben