Tuesday, July 29, 2008

Compiler Workflow

. Tuesday, July 29, 2008

E' possibile compilare il flusso di lavoro scritto in C# / Visual Basic o tag XAML tramite il metodo Compile della classe WorkflowCompiler.
Ma vediamo un semplice esempio.
Supponiamo che il nostro flusso sia composto dai seguenti file:

  • Workflow1.cs
  • Workflow1.designer.cs

il codice per eseguire il compile è così fatto:

   1: //Path della directory in cui si trovano i files cs da compilare
   2: string pathFolder = @"path";
   3: string[] filesCompilation = { System.IO.Path.Combine( pathFolder, "Workflow1.cs"),
   4:         System.IO.Path.Combine( pathFolder, "Workflow1.designer.cs")};
   5:  
   6: WorkflowCompiler wfc = new WorkflowCompiler();
   7: WorkflowCompilerParameters paramters = new WorkflowCompilerParameters();
   8: paramters.OutputAssembly = System.IO.Path.Combine(pathFolder, "Workflow1.dll");
   9:  
  10: WorkflowCompilerResults results = wfc.Compile(paramters, filesCompilation);
  11:  
  12: if (results.Errors.Count == 0)
  13: {
  14:   //OK
  15: }
  16: else
  17: {
  18:   foreach (WorkflowCompilerError error in results.Errors)
  19:   {
  20:     string err = error.ErrorText;
  21:   }
  22: }

La classe WorkflowCompilerParameter ci permette di passare una serie di parametri alla classe WorkflowCompiler necessari alla fase di compilazione.
In questo preciso esempio per impostare il nome dell'assembly di output valorizzo la propertyOutputAssembly.
Se invece dobbiamo referenziare una serie di assembly, la classe ci fornisce la collection ReferencedAssemblies:


   1: paramters.ReferencedAssemblies.Add("MyAssembly.dll");


Oppure se abbiamo la necessità di includere dei file di risorse:


   1: paramters.EmbeddedResources.Add( System.IO.Path.Combine( pathFolder, "Workflow1.rules"));

 

Per concludere è possibile compilare, anche, attraverso linea di comando tramite:
Start -> Tutti i Programmi -> Microsoft Visual Studio 2008 -> Visual Studio Tools -> Visual Studio 2008 Command Prompt
e lanciare wfc.exe
Se si vuole conoscere le varie opzioni basta lanciare wfc /?

0 commenti:

Post a Comment