Это мой первый вопрос на StackOverflow, так что привет:)
Можно ли загрузить сборку по имени сборки, используя Assembly.Load ()в шаблоне t4? Я хотел бы использовать его для получения всех типов с атрибутом ServiceContract в загруженной сборке.
var loadedAssembly = Assembly.Load(assemblyName);
var types = from type in loadedAssembly.GetTypes()
where Attribute.IsDefined(type, typeof(ServiceContractAttribute))select type;
Желаемая сборка упоминается в проекте, где находится мой шаблон. Я понял, что
<#@ assembly name="$(TargetDir)\DesiredAssemblyName.dll" #>
var loadedAssembly = Assembly.GetAssembly(typeof(SomeType));
работает, но это не похоже на хорошее решение. Кроме того, я хочу, чтобы этот шаблон трансформировался после сборки и когда я добавляю следующие строки в.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>
решение с Assembly.GetAssembly тоже не работает. Спасибо за все предложения.