Шаблон T4 и Assembly.Load

Это мой первый вопрос на 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 тоже не работает. Спасибо за все предложения.

6
задан Kapitán Mlíko 8 January 2013 в 13:35
поделиться