Не добавлять ссылку автоматически при использовании производителя Tempplace

Я делаю проект CodeFluent Entities и использую Template Producer для создания отчета, который печатает некоторые статистические данные о моей модели.

Как я мог видеть, этот Producer автоматически добавляет две ссылки (CodeFluent.Runtime.dll и CodeFluent.Runtime.Web.dll). Это отличная функция, тем не менее в моем случае я не генерирую никаких классов C#, поэтому целевому проекту эти ссылки действительно не нужны.

Как я могу отключить это поведение?


person LorisMayers    schedule 17.01.2014    source источник


Ответы (2)


Производитель шаблонов наследуется от CodeDomProducer (тот, который генерирует спецификацию). Это позволяет производителю шаблона иметь некоторые полезные методы, такие как AddToGeneratedFiles, который добавляет файл в целевой проект Visual Studio, или AddCompilationReferences, который добавляет ссылки на целевой проект.

Производитель также наследует некоторые параметры конфигурации, такие как Target Project Layout типа CodeFluent.Model.Design.TargetProjectLayoutOptions.

[Flags]
public enum TargetProjectLayoutOptions
{
    None        = 0x0,

    [Description("Update All")]
    Update = UpdateReferences | UpdateItems,

    [Description("Update References")]
    UpdateReferences = 0x1,

    [Description("Update Items")]
    UpdateItems = 0x2,

    [Description("Do Not Remove Existing Items")]
    DontRemove = 0x4,

    Default     = Update,
}

Как видите, это позволяет вам не обновлять ссылки на проекты. Итак, чтобы ответить на ваш вопрос, конфигурация вашего производителя должна выглядеть так:

<cf:producer name="Template" typeName="CodeFluent.Producers.CodeDom.TemplateProducer, CodeFluent.Producers.CodeDom">
    <cf:configuration cfx:targetProjectLayout="UpdateItems" [other options] />
</cf:producer>

Удачного шаблонирования :)

person meziantou    schedule 20.01.2014

Я не уверен, что вы действительно можете удалить ссылку из CodeFluent.Runtime.dll, так как он на самом деле содержит механизм шаблонов, см. -the-template-engine/" rel="nofollow">http://blog.codefluententities.com/2013/12/26/exploring-the-codefluent-runtime-the-template-engine/ в основном проекте.

Но поскольку сгенерированный код может не ссылаться на CodeFluent.Runtime.dll, это не обязательно в целевом проекте.

Я согласен, что было бы полезно удалить ссылку CodeFluent.Runtime.Web.dll, если она вам не нужна (которая на самом деле не содержит очень много вещей, согласно http://www.softfluent.com/documentation/).

person cubitouch    schedule 17.01.2014
comment
Производитель шаблона генерирует код, который может не зависеть от CodeFluent.Runtime.dll, поэтому эта ссылка (в целевом проекте) не является обязательной. - person meziantou; 20.01.2014
comment
Спасибо за точность ;) - person cubitouch; 20.01.2014