У меня есть следующий код в классе тестера в моей основной сборке PocoGenerator
. Эта сборка должна использовать шаблон T4 для создания POCO на основе сущностей L2S в сборке, на которую имеется ссылка (ссылка на проект), DataObjects
.
var assemblyName = "DataObjects";
var dataObjects = AppDomain.CurrentDomain.Load(new AssemblyName(assemblyName));
Как бы я ни старался, я не могу заставить T4 найти сборку DataObjects. Я пробовал различные формы assembly
директив, например:
<#@ assembly name="DataObjects" #>
<#@ assembly name="DataObjects, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null" #>
но безрезультатно. Приведенный выше код работает в классе тестера, но не в шаблоне. Что я делаю неправильно?
ДОБАВЛЕНО: я решил эту проблему, используя абсолютный путь к сборке в местах, где я ссылаюсь на нее, директиву, а также блок функций класса, т. Е.
<#@ assembly name="C:\Development\PocoGenerator\DataObjects\bin\Debug\DataObjects.dll" #>
и
var sourceAssembly = Assembly.LoadFile(@"C:\Development\PocoGenerator\DataObjects\bin\Debug\DataObjects.dll");
Но мне это очень не нравится, так как я хотел бы использовать этот шаблон в различных проектах, и я просто ненавижу дублирование, особенно магических строк.