Не удается получить доступ к методу в той же сборке, что и мой шаблон T4 - PullRequest
1 голос
/ 08 августа 2010

Я пытался разрешить проблемы со ссылками на сборки в моем шаблоне T4, перемещая код в вспомогательный метод в том же сборке и пространстве имен, что и мой шаблон, но T4 отказывается найти мой вспомогательный метод.

Вспомогательный метод:

namespace PocoGenerator
{
    public class EntityReflector
    {
        public static IEnumerable<PropertyInfo> GetPropertiesForTemplate()
        {
            var baseNameSpace = "";
            var assemblyName = "DataObjects";

Непокорный код шаблона:

<# foreach(PropertyInfo prop in PocoGenerator.EntityReflector.GetPropertiesForTemplate()) { #>
public <#= prop.PropertyType #> <#= prop.Name #> {get; set; }
<# } #>

1 Ответ

1 голос
/ 16 апреля 2011

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

Пока вы используете VS2010 SP1с этим проблем с блокировкой сборки не будет.

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

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

...