Ach, es ist schon anstrengend jedesmal die API-Addins zu signieren. Gerade wenn man in der Entwicklung ist.
Ich mag keine Arbeitsschritte die ich immer wieder gleich manuell machen muss, das dürfte ja bekannt sein :^)
Darum habe ich mich umgeschaut wie man denn das Signieren automatisieren kann.
Mit dem Befehlszeilentool MsBuild kann man Projekte bauen und mit Parametern auch gleich signieren:
msbuild myapplication.sln /p:SignAssembly=true /p:DelaySign=true /p:AssemblyOriginatorKeyFile=mykey.snk
Einfach die Pfade zu den Dateien (Projekt/Key-File) eintragen und fertig… Denkt man. Aber es klappt nicht, habe schon einige Zeit damit verbracht dieses Verhalten nachzuvollziehen.
Aber ich habe einen Workaround gefunden. Die Projektdatei (bei C# *.csproj) kann man so anpassen dass beim Release auch signiert wird:
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|x86' "> <PlatformTarget>x86</PlatformTarget> <OutputPath>bin\Release\</OutputPath> <SignAssembly>true</SignAssembly> <AssemblyOriginatorKeyFile>myKey.snk</AssemblyOriginatorKeyFile> <DelaySign>true</DelaySign> </PropertyGroup>
Zu beachten: Bei Änderungen an den Eigenschaften im Projekt können sich diese Werte ändern.
Ich habe mir den Arbeitsablauf schon soweit automatisiert, dass bei jedem Release-Build die DLL gleich signiert wird. Alle Abhängigkeiten werden auch gleich zusammenkopiert. Für das Debuggen das gleiche, aber ohne Signing :^)
Jetzt muss ich nur noch den Upload zu EPLAN automatisieren, wenn da Jemand was für mich hat, wäre sehr dankbar!
[…] hatte hier ja mal was ausprobiert… aber so ganz zufrieden war ich da […]