2009-04-30 7 views
1

У меня есть библиотека, которая определяет классCan T4 шаблоны используют ту же библиотеку

namespace ClassLibrary1 
{ 
    public class Class1 
    { 
     public static readonly int Rate = 5; 
    } 
} 

В то же Lib добавить Tt файлу

<#@ template debug="false" hostspecific="false" language="C#" #> 
<#@ output extension=".cs" #> 
<#@ import namespace="ClassLibrary1" #> 
<#@ assembly name="ClassLibrary.dll" #> 

enum MilkRate{ Walmart=<#= Class1.Rate #>} 

Я получаю ошибку «Компиляция преобразование: Метаданные файла 'ClassLibrary.dll' не удалось найти d: \ documents \ visual studio 10 \ Projects \ ConsoleApplication2 \ ClassLibrary1 \ TextTemplate1.tt "

как это решить?

[Происходит на VS 2010, VS2008]

+0

Что такое tt-файл? – CSharper

+1

http://www.hanselman.com/blog/T4TextTemplateTransformationToolkitCodeGenerationBestKeptVisualStudioSecret.aspx –

+1

(Возможно, вы также захотите добавить тег T4) –

ответ

1

Я не уверен, если это возможно.

Я думаю, что проблема, с которой я мог столкнуться, заключается в следующем: ваш шаблон генерирует код, который изменит DLL, на которую он ссылается!

Одна вещь, которую вы можете сделать, это есть одна ссылка шаблона: другой шаблон, используя:

<#@ include file="Helper.tt" #> 

В этом случае вы можете определить Rate = 5 в одном центральном шаблоне и есть все остальное, что ссылки. Вы даже можете создать шаблон для создания своего класса Class1, чтобы все было проведено в одном центральном месте.

Я знаю, что прямо не отвечает на ваш вопрос, но я надеюсь, что он полезен в любом случае.

1

Вы можете сделать это, но есть проблемы с этим «рекурсивным» стилем работы, требующим ухода.

В VS2010 вы можете использовать переменные VS Macro, $ (SolutionDir), $ (ProjectDir) и друзей в директиве < # @ assembly #>, например.

< # @ сборочные имя = "$ (ProjectDir) $ (OutDir) ClassLibrary.dll" #>

Если вы затем разработчик сделать чистую получить от системы управления, они должны сделать строить, прежде чем они смогут сделать рабочее преобразование.

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

Смежные вопросы