Это было некоторое время, так как я в последний раз использовал T4, и это - вероятно, глупый вопрос...
Действительно ли возможно сослаться на произвольный блок из шаблона?
Пример:
Я предполагаю, что следующее должно работать
<#@ assembly name="X" #>
Но я преуспеваю, следующая ошибка сохраните:
Компиляция преобразования: файл 'X' Метаданных не мог быть найден
Что я делаю неправильно?
(В случае, если любой заинтересовал: я пытаюсь автоматически генерировать конкретный тип тестов на основе некоторых метаданных, от которых я добираюсь X)
Обновление: похоже, что VS2010 повредил поведение разрешения блока, которое я ожидал. Из http://blogs.msdn.com/b/garethj/archive/2010/04/15/what-s-new-in-t4-in-visual-studio-2010.aspx:
Сборочный комплект T4 полностью разделяется от содержания сборочного комплекта проекта, чтобы не брать неправильные блоки, когда проект предназначается для предыдущих версий платформы. Блоки проекта больше не используются для разрешения шаблонных директив блока.
Есть ли какие-либо обходные решения помимо использования полных путей?
Вы можете использовать макропеременные VS, такие как $ (SolutionDir), в справочнике, начиная с VS2010. например
<#@ assembly name="$(SolutionDir)\Project1\bin\debug\Foo.dll" #>