To jest moje pierwsze pytanie na StackOverflow tak Cześć :)T4 szablon i Assembly.Load
Czy to możliwe, aby załadować montaż wg nazwy Zgromadzenia z wykorzystaniem Assembly.Load() w szablonie t4? Chciałbym użyć go, aby uzyskać wszystkie typy z atrybutem ServiceContract w załadowanym zestawie.
var loadedAssembly = Assembly.Load(assemblyName);
var types = from type in loadedAssembly.GetTypes()
where Attribute.IsDefined(type, typeof(ServiceContractAttribute))select type;
Żądany zestaw odwołuje się w projekcie, w którym znajduje się mój szablon. Stwierdziłem, że działa, ale nie wydaje się dobrym rozwiązaniem. Poza tym chcę, że szablon do przekształcenia po kompilacji i kiedy dodać następujące linie do .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>
rozwiązanie Assembly.GetAssembly nie działa albo. Dziękujemy za wszystkie sugestie.
Widziałeś to? http://stackoverflow.com/questions/3434713/cant-reference-an-assembly-in-a-t4-template – devlife
Oh wow! Twoja sprawa jest dokładnie taka sama jak moja, aż do sprawdzenia atrybutu wcf! Rozwiązałeś to? Próbuję załadować zespół ręcznie za pomocą ShadowCopy, aby zapobiec problemom z blokowaniem w bibliotekach DLL używanych w szablonie T4. – julealgon
@julealgon niestety nie. Robię to ręcznie, gdy tylko wiem, że wynik się zmienia. –