Laden...

[erledigt] VS Build Prozess verändern: Selbst generierte Quellcode-Datei einbinden/mitübersetzen

Erstellt von Andreas T vor 9 Jahren Letzter Beitrag vor 9 Jahren 1.743 Views
A
Andreas T Themenstarter:in
5 Beiträge seit 2014
vor 9 Jahren
[erledigt] VS Build Prozess verändern: Selbst generierte Quellcode-Datei einbinden/mitübersetzen

Guten Abend,

für ein Projekt habe ich einen Parser erstellt, der eine Xml Datei einliest und daraus c# Code mittels CodeDome (evtl. später Microsoft Roslyn) generiert und die Datei ins Projektverzeichnis legt. Es handelt sich dabei um eine partielle Klasse. Nun möchte ich Visual Studio dazu bekommen diese Datei mit zu übersetzen. Mit MSBuild komme ich leider auch nicht weiter.

Es soll quasi in etwa das gleiche machen wie ein ASP.Net / WPF Parser der den Xml Code einließt, daraus eine partielle Klasse generiert und sie in die Assembly mitübersetzt. Zurzeit habe ich Visual Studio 2013 (Professional glaube ich) mit installiertem Roslyn DCP.

Ich bin für jede Idee dankbar, die mich weiterbringt.
Vielen Dank

Grüße

Andi

2.223 Beiträge seit 2005
vor 9 Jahren

Hallo Andreas T,

kannst Du uns ein wenig mehr über dein Vorhaben erzählen ?

muss die Datei immer wieder erneut generiert werden?

warum mit CodeDom?
spontan würde ich eher auf eine XSLT Transformation oder die Template Engine vom Visual Studio den Code erzeugen.

Viele Grüße
Lars

849 Beiträge seit 2006
vor 9 Jahren

Hört sich für mich eher an wie custom tools:

Custom Tools explained

A
Andreas T Themenstarter:in
5 Beiträge seit 2014
vor 9 Jahren

@ Lars Schmitt

Ich erstelle ein Framework das ähnlich wie Asp.Net arbeitet, jedoch auf einer anderen Eingabesyntax basiert. Diese ist angelehnt an XAML wie in der WPF. Das Framework stellt Klassen bereit, die im XML angegeben werden, instanziert und dann ausgeführt.

Momentan werden diese XML Files zur !!Laufzeit!! interpretiert und in entspechende Objekte übersetzt, dies ist jedoch nicht sehr performant, wesewegen ich die Idee hatte mithilfe einer Compiler die Xml Datei in eine entspechende Partielle Klasse zu übersetzen (in C# Code), die dann im Buidvorgang zu CIL Code übersetzt wird. Es würde dann kompiliert werden, was einen entspechenden Performanceboost bringen würde. Für jede Xml Datei müsste so automatisch vor jedem Buildvorgang eine entsprechende c# Datei angelegt werden.

Mein XML schaut beispilsweise so aus:



<Frame xmlns="http://PINGO.de/default" xmlns:x="http://PINGO.de/markup" Title="TestTitle">
  <TextBox Name="tb1">Inhalt</TextBox>
  <PasswordBox Name="pb1"/>
</Frame>



Und würde in c# übersetzt ca. folgende Klasse ergeben:



public partial class Frame1 : Frame
{
   protected TextBox tb1;
   protected PasswordBox pb1;

   public Form1()
   {
      InitComp();
   }

   private void InitComp()
   {
      tb1 = new TextBox();
      tb1.Text = "Inhalt";
      AddChild(tb1);

      pb1 = new PasswordPox();
      AddChild(pb1);
   }
}


@unconnected

Danke 😃 Schau ich mir gerne an

Grüße

Andi

A
Andreas T Themenstarter:in
5 Beiträge seit 2014
vor 9 Jahren

@unconnected
War genau das was ich gesucht habe. Danke