У меня есть следующий код в классе тестера в моей основной сборке, 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");
Но мне действительно не нравится это, так как я бы Мне нравится использовать этот шаблон в различных проектах, и я просто ненавижу дублирование, особенно магических строк.
У меня была похожая проблема, когда я пытался включить Less Css for .NET в свой веб-проект.
В итоге я скопировал сборку в корневую папку своего проекта и включил ее как ссылку в сам проект. Затем я добавил следующие строки в файл .tt:
<#@ assembly name="dotless.Core.dll" #>
<#@ import namespace="dotless.Core" #>
<#@ import namespace="dotless.Core.configuration" #>
Я уверен, что нечто подобное должно работать и с вашей сборкой...
Я обнаружил, что есть ряд случаев при создании и использовании набора инструментов и пакетов gax, когда сборка полностью удовлетворяет способ структурирования ссылок, но среда выполнения беспокоит, потому что может не находит то, что ищет - это обычно происходит, когда основная сборка ссылается на сборку, которая использует элементы gax, а затем эта сборка, в свою очередь, ссылается на другую сборку, которой нет в основной сборке.
попробуйте напрямую включить рассматриваемую сборку в вашу основную сборку - и учтите, что вам может потребоваться написать инструкции по сборке, чтобы переместить ее в «ожидаемое» место - в то время как nusiance, это должно быть лучше, чем необходимость жесткой привязки пути.
YMMV