Невозможно ссылаться на сборку в шаблоне T4

У меня есть следующий код в классе тестера в моей основной сборке, PocoGenerator . Предполагается, что эта сборка будет использовать шаблон T4 для генерации POCO на основе объектов L2S в ссылочной сборке (ссылка на проект), DataObjects .

var assemblyName = "DataObjects";
var dataObjects = AppDomain.CurrentDomain.Load(new AssemblyName(assemblyName));

Попробуйте, как я могу, Я не могу получить T4, чтобы найти сборку DataObjects. Я пробовал различные формы директив по сборке , например:

<#@ 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");

Но мне действительно не нравится это, так как я бы Мне нравится использовать этот шаблон в различных проектах, и я просто ненавижу дублирование, особенно магических строк.

31
задан ProfK 9 August 2010 в 08:45
поделиться

2 ответа

У меня была похожая проблема, когда я пытался включить Less Css for .NET в свой веб-проект.

В итоге я скопировал сборку в корневую папку своего проекта и включил ее как ссылку в сам проект. Затем я добавил следующие строки в файл .tt:

<#@ assembly name="dotless.Core.dll" #>

<#@ import namespace="dotless.Core" #>
<#@ import namespace="dotless.Core.configuration" #>

Я уверен, что нечто подобное должно работать и с вашей сборкой...

1
ответ дан 27 November 2019 в 21:57
поделиться

Я обнаружил, что есть ряд случаев при создании и использовании набора инструментов и пакетов gax, когда сборка полностью удовлетворяет способ структурирования ссылок, но среда выполнения беспокоит, потому что может не находит то, что ищет - это обычно происходит, когда основная сборка ссылается на сборку, которая использует элементы gax, а затем эта сборка, в свою очередь, ссылается на другую сборку, которой нет в основной сборке.

попробуйте напрямую включить рассматриваемую сборку в вашу основную сборку - и учтите, что вам может потребоваться написать инструкции по сборке, чтобы переместить ее в «ожидаемое» место - в то время как nusiance, это должно быть лучше, чем необходимость жесткой привязки пути.

YMMV

0
ответ дан 27 November 2019 в 21:57
поделиться
Другие вопросы по тегам:

Похожие вопросы: