msbuild custom task dll



  • Hallo zusammen

    Ich bin gerade dabei unseren Build Prozess mit Installationspaketerstellung mit Msbuild und WIX zu automatisieren.
    Nun würde ich gerne für Msbuild eine neue Task Dll schreiben.
    Allerdings habe ich hierzu relative wenig Infos gefunden, und mir ist überhaupt nicht klar ob hier zwingend .Net notwendig ist oder nicht.
    Die Frage ist also kann ich mit dem Builder eine Task Dll für Msbuild erstellen oder nicht?

    MfG Stephan



  • Stephan schrieb:

    Die Frage ist also kann ich mit dem Builder eine Task Dll für Msbuild erstellen oder nicht?

    Eher nicht. MSBuild ist Managed Code, und die Interfaces, die du implementieren müßtest (speziell Microsoft.Build.Framework.ITask) sind anscheinend nicht COMVisible. Unabhängig davon, ob es auch mit C++Builder gehen würde, machst du dir das Leben sicherlich leichter, wenn du es in einer .NET-Sprache machst.

    (Die Build-Tasks, die C++Builder selbst verwendet, sind auch in Managed Code geschrieben, vermutlich in Delphi Prism oder C#, siehe $(BDS)\bin\Borland.Build.Tasks.*.dll. Du kannst ja mal mit dem Reflector reinschauen.)



  • Hallo audacia

    Mein eigentliches Ziel ist, einen Task zu erstellen, um Builder Map-Files in Jdbg-Files (Jedi komprimiertes Map-File für ) umzuwandeln.
    Wenn ich mir dies recht überlegen, ist Jedi vermutlich nicht mit Delphi Prism kompatibel.
    Somit sehe ich momentan keine Möglichkeit diese Funktionalität in eine Msbuild Task Dll auszzulagern.
    Habe ich dies richtig verstanden?

    MfG Stephan



  • Stephan schrieb:

    Mein eigentliches Ziel ist, einen Task zu erstellen, um Builder Map-Files in Jdbg-Files (Jedi komprimiertes Map-File für ) umzuwandeln.

    Reicht es da nicht, ein kleines Kommandozeilenprogramm zu schreiben, das einfach nur JclDebug.ConvertMapFileToJdbgFile() mit den Kommandozeilenargumenten aufruft, und das als Post-Build-Event für dein Projekt einzutragen?

    Stephan schrieb:

    Somit sehe ich momentan keine Möglichkeit diese Funktionalität in eine Msbuild Task Dll auszzulagern.

    Du kannst entweder in deinem Build-Task obiges Kommandozeilenprogramm aufrufen, oder du erstellst mit Delphi oder C++Builder eine gleichwertige DLL, die JclDebug.ConvertMapFileToJdbgFile() entweder als Plain-C-Funktion (die du dann via P/Invoke aufrufst) oder aber über eine COM-Schnittstelle zugänglich macht. Das Post-Build-Event ist aber sehr viel einfacher.


Log in to reply