Questa è la mia prima domanda su StackOverflow in modo Hi :)template T4 e Assembly.Load
E 'possibile caricare l'assembly in base al nome dell'Assemblea utilizzando Assembly.Load() nel template T4? Vorrei usarlo per ottenere tutti i tipi con l'attributo ServiceContract nell'assembly caricato.
var loadedAssembly = Assembly.Load(assemblyName);
var types = from type in loadedAssembly.GetTypes()
where Attribute.IsDefined(type, typeof(ServiceContractAttribute))select type;
L'assieme desiderato è referenziato nel progetto in cui si trova il mio modello. Ho capito che
<#@ assembly name="$(TargetDir)\DesiredAssemblyName.dll" #>
var loadedAssembly = Assembly.GetAssembly(typeof(SomeType));
funziona ma non sembra una buona soluzione. Oltre Voglio che modello di trasformare dopo la generazione e quando aggiungo seguenti righe Csproj
<Import Project="$(MSBuildExtensionsPath)\Microsoft\VisualStudio\
TextTemplating\v10.0\Microsoft.TextTemplating.targets"/>
<PropertyGroup>
<TransformOnBuild>true</TransformOnBuild>
</PropertyGroup>
<ItemGroup>
<!--Add VS\...\PublicAssemblies to the list of places
to look for assemblies used by templates.-->
<T4ReferencePath Include="..\Onii.Vespa.AppServer\"/>
</ItemGroup>
soluzione Assembly.GetAssembly non funziona neanche. Grazie per tutti i suggerimenti.
Avete visto questo? http://stackoverflow.com/questions/3434713/cant-reference-an-assembly-in-a-t4-template – devlife
Oh wow! Il tuo caso è esattamente uguale al mio, fino al controllo dell'attributo wcf! Hai risolto questo? Sto provando a caricare un assembly manualmente usando ShadowCopy per evitare problemi di blocco sulle DLL utilizzate all'interno del modello T4. – julealgon
@julealgon sfortunatamente no. Lo faccio manualmente ogni volta che so che il risultato cambia. –