Come utilizzare T4 e Visual Studio per Estendere una Classe Parziale
-
22-08-2019 - |
Domanda
Ho voluto utilizzare T4 per generare le proprietà di una classe parziale.Sto correndo in un problema di configurazione in cui la mia .TT file è lo stesso progetto del file di classe voglio estendere.Quindi, se devo includere l'assemblea, nel .TT file di esso si è bloccato.Ho provato a fare una riga di comando nel pre-build, ma il problema è che la VS sempre voglia di ricompilare il .TT file con il progetto.
L'unica soluzione che posso pensare è quello di rinominare il .tt i file da dire .t4 e quindi utilizzare un pre-compilazione di comando con TextTransform per creare la .cs file nella directory del progetto.
Qualcuno può pensare a un modo più pulito per fare questo?
Soluzione
Supponendo che il blocco è causato dal vostro modello di utilizzo di Riflessione per leggere i metadati di classe parziale è necessario estendere, si potrebbe risolvere il problema del blocco se si utilizza CodeModel.Questa API è fornito da Visual Studio e consente di ottenere i metadati direttamente dal file di origine, senza la necessità di compilare la classe parziale o caricare la DLL compilata.Ecco un esempio di un T4 generatore di codice che utilizza questo approccio: http://www.olegsych.com/2008/07/t4-template-for-generating-sql-view-from-csharp-enumeration