Montag, 23. April 2012

Windows Azure und Native Code / C++&CLI Integration

Die Einbindung von nativem Code in euer Windows Azure Projekt ist relativ einfach. Relativ deswegen, weil ein paar Dinge zu beachten sind. Meist fängt der Erste Versuch mit folgender Fehlermeldung an:

BadImageFormatException: An attempt was made to load a program with an incorrect format. (Exception from HRESULT: 0x800700B)

Eine gute Anleitung findet man unter: Windows Azure and Native Code.

Leider hat dies bei uns nicht ausgereicht...

CloudServices49 : The assembly '*.dll' is delay-signed.

Im unteren Teil der Anleitung findet man in der "Troubleshooting"-Section zwar zahlreiche Fehlermeldungen und deren Ursache - wir hatten allerdings mit einem weiteren zu kämpfen. Der Web-Server zeigte eine Standard Assembly-Load Exception an, bei einem Blick in "Output"-Fenster von Visual Studio beim "Debuggen/Package.../Publish..." erblickten wir allerdings folgendes:

Microsoft.WindowsAzure.targets : warning : CloudServices49 : The assembly '*.dll' is delay-signed. [*.ccproj]"

Eine Überprüfung mithilfe von "sn.exe" zeigte, dass die gesuchte DLL nicht korrekt signiert war. Hierfür muss die DLL im temporären Azure Package Ordner überprüft werden:

sn.exe -v *\csx\Debug\roles\*\approot\bin\*.dll

"sn.exe" wird zusammen mit dem Windows SDK ausgeliefert, welches Teil von Visual Studio ist. Es sollte sich somit unter "C:\Program Files (x86)\Microsoft SDKs\Windows\v7.0A\Bin" finden lassen.

Kommen wir zurück zu unserer nicht richtig signierten DLL. Sollte die DLL nicht korrekt signiert sein, muss der entsprechende Eintrag in den "Post-Build"-Event des Nativ-Projektes eingetragen werden:

sn.exe -r "$(SolutionDir)*\*.dll" "$(SolutionDir)*.snk"

Danach sollte auch der "warning : CloudServices49" nicht mehr auftauchen. Ein Fehler wäre evtl. an dieser Stelle sinnvoller, als ein "Warning"

1 Kommentar:

  1. Solche Probleme habe ich nicht gewesen. Für etwas so oft DLL-Dateien konfrontiert. Ich denke, dass viele, die Probleme mit ihnen gehabt. Ich möchte Ihnen hier zeigen, ist eine Website, die ich es verwenden, um sie herunterzuladen. Hier ist ein Link http://de.fix4dll.com/ .

    AntwortenLöschen