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!