Posso ridistribuire il motore Microsoft T4 con il mio prodotto? [chiuso]

StackOverflow https://stackoverflow.com/questions/443027

  •  22-07-2019
  •  | 
  •  

Domanda

Sto generando codice in modo dinamico, attualmente usando String.Format e incorporando segnaposto - ma riformattare il codice C # per usarlo come modello è una seccatura e penso che usare un modello T4 sarebbe meglio.

Tuttavia, la generazione del codice avverrà su un sistema in esecuzione, quindi devo sapere che posso ridistribuire legalmente e in modo sicuro il motore Microsoft T4 con il mio prodotto.

Qualcun altro ha fatto questo? O conosci la risposta (legale)?

È stato utile?

Soluzione

Sembra che presto potrebbe esserci un'altra opzione.

Ieri, Miguel de Icaza ha pubblicato sull'integrazione T4 in MonoDevelop, quindi mi aspetto che ci sia un set di strumenti T4 mono equivalente in qualsiasi momento.

Vedi: http://tirania.org/blog/archive/2009/ mar-10.html

Altri suggerimenti

Puoi ridistribuire T4 come parte di DSLToolsRedist , tuttavia, richiede che Visual Studio 2005 versione standard o successiva sia già installato. Non credo che T4 possa essere legalmente ridistribuito senza Visual Studio in questo momento. Lo scenario che hai descritto sarà direttamente supportato in Visual Studio 2010

Ho la risposta e sfortunatamente non è come suggeriva Oleg. (Ottimo lavoro su T4 a proposito Oleg). Non puoi ridistribuire T4 in questo momento - fa parte di VS. In VS2010 sarà possibile precompilare i modelli T4 e quindi ridistribuire quei modelli precompilati con l'applicazione senza alcuna dipendenza T4 per eseguirli.

Per chiarezza, la risposta ufficiale è che non è possibile distribuire il motore Microsoft T4 come un pezzo separato da Visual Studio.

Tuttavia, a partire da Visual Studio 2010, è possibile utilizzare e ridistribuire modelli precompilati, che non dipendono da Visual Studio.

Puoi anche usare T4 al di fuori di Visual Studio su un computer su cui è installato Visual Studio.

Puoi anche concedere in licenza e ridistribuire gratuitamente Shell isolata di Visual Studio e utilizzarla come host per i tuoi strumenti - include T4.

A partire da Visual Studio 2010 SP1, si è autorizzati a copiare T4 sul proprio computer di costruzione tramite la licenza in buildserver.txt nella directory di installazione di VS.

Ho il mio sistema di generazione di codici modello, che compila il codice in un appdomain separato, prima che uscisse VS2008.

Se sei interessato, pubblica un commento e posterò un URL al codice.

Il codice per utilizzare il mio motore di template è qui , puoi cercarlo con un browser web o puntare un Subversion client. Nota, il collegamento che inizia con qui si interrompe davvero dopo la parola, ma il renderer WMD sul lato server perde il collegamento nel seguente testo.

Nota che se copi il singolo file in quello spazio dei nomi, allora non si compila da solo, richiede alcune cose in LVK.Delegates e LVK.Scripting, lo spazio dei nomi sale di un paio di livelli dal link sopra. Se non vuoi risucchiare l'intera libreria, dovrai estrarre i pezzi di cui si lamenta uno alla volta fino a quando non vengono compilati.

Esiste anche una versione binaria della libreria in / LVK_3_5 / trunk / Binaries / Debug / LVK nello stesso repository. Se lo scarichi è semplice come aggiungere un riferimento ad esso e controllare la classe LVK.Text.Templates.TextTemplate .

Purtroppo al momento non ho esempi per la mia biblioteca.

Fondamentalmente, per usare un modello:

TextTemplate tt = new TextTemplate();
tt.Source = "... code here, check example file above ...";
tt.Compile();
String output = tt.Generate(singleObjectParameter);

All'interno del modello, che è fondamentalmente tutto il codice inserito in un singolo metodo (il che significa che non è buono come T4 in termini di poter aggiungere facilmente metodi, ma puoi usare metodi anonimi), avere accesso all'oggetto dati passato in esso come parametro denominato data.

Quindi, per generare semplicemente il contenuto del parametro passato:

<%= data %>

Per ripeterlo:

<% for (Int32 index = 0; index < 10; index++) { %>
<%= data %>
<% } %>

In caso di domande, inviarle alla mia e-mail all'indirizzo lasse@vkarlsen.no.

Ho ricordato che è tornato nel 2006 (prima di sapere cosa fosse T4!) e sono andato alla ricerca e ho trovato questo http://social.msdn.microsoft.com/Forums/en-US/vsx/thread/1ab0bf3f-2810-4adf-bf75 -900b98dee8e2 / Purtroppo il collegamento gotdotnet è interrotto. Difficile dire dove in quella discussione stanno concordando che puoi legalmente ospitare T4 al di fuori di VS e ridistribuire - oppure no.

È un vero peccato, ma come sottolinea Oleg, se non è stato testato, come puoi rilasciarlo.

Lassevk, certamente sono interessato - stava pensando di ripassare un motore di template che ho costruito circa 10 anni fa, ma sono sempre pronto per una vita più facile!

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top