che sto cercando di eseguire un nuovo modello T4 in Visual Studio 2015. Tuttavia non riesce a compilare in questa linea:Come posso utilizzare le ultime funzionalità di C# v6 nei modelli T4?
var message = $"Linked table '{linkedTable}' does not exist.";
Il compilatore segnala che carattere il '$' è inaspettato. Questa sintassi dovrebbe tuttavia essere valida in C# v6, in base alle nuove linee guida sulle funzioni string interpolation.
C'è un modo per fare in modo che il motore di template T4 utilizzi la versione C# più recente, oltre a compilare il mio codice in una libreria esterna?
UPDATE:
Qui ci sono gli elementi di dichiarazione per il file, come riferimento:
<#@ template debug="false" hostspecific="false" language="C#" #>
<#@ output extension=".sql" #>
<#@ SqlModelDirective processor="SqlModelDirectiveProcessor" #>
<#@ import namespace="System" #>
<#@ import namespace="System.Linq" #>
<#@ import namespace="System.Text" #>
<#@ import namespace="Microsoft.SqlServer.Dac" #>
<#@ import namespace="System.Collections.Generic" #>
<#@ import namespace="Microsoft.SqlServer.Dac.Model" #>
A parte l'elemento SqlModelDirective
questo è abbastanza standard penso.
puoi pubblicare il "resto" del T4? L'inizio di solito ha direttive che definiscono la lingua, il collegamento, ecc. – Eris
Puoi usare altre caratteristiche di C# 6 in T4? L'interpolazione delle stringhe non funziona sulle pagine Razor anche se funzionano altre funzioni. Forse è lo stesso bug in T4. Sia Razor che T4 sono convertiti in codice C# prima della compilazione. Un errore in quella conversione potrebbe generare il codice C# errato quando si utilizza l'interpolazione delle stringhe –
@Eris I ha aggiornato il post. – Crono