使用Templace生产者时不要自动添加引用



我正在做一个CodeFluent Entities项目,我使用模板生成器生成一个报告,打印有关我的模型的一些统计信息。

正如我所看到的,这个生产者会自动添加两个引用(CodeFluent.Runtime.dll和CodeFluent.Runtime.Web.dll)。这是一个很棒的功能,但就我而言,我没有生成任何 C# 类,因此目标项目并不真正需要这些引用。

如何禁用此行为?

模板生成者继承自CodeDomProducer(生成 BOM 的那个)。这允许模板生成者具有一些有用的方法,例如将文件添加到 Visual Studio 目标项目的AddToGeneratedFiles,或添加对目标项目的引用的AddCompilationReferences

生产者还继承了一些配置选项,例如类型CodeFluent.Model.Design.TargetProjectLayoutOptionsTarget Project Layout

[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>

快乐的模板:)

我不确定你真的可以从CodeFluent.Runtime.dll中删除引用,因为它实际上包含模板引擎,请参阅主项目中的 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/,实际上不包含很多东西)。

最新更新