【问题标题】:NAnt extension function, Project objectNAnt 扩展函数,Project 对象
【发布时间】:2008-11-12 14:37:29
【问题描述】:

有没有办法从 NAnt 扩展函数访问 Project 对象,就像可以通过扩展任务完成的那样?

在本例中,我想在Bar 函数中使用BaseDirectory 属性:

[FunctionSet("foo", "Foo")]
public class FooFunctions : FunctionSetBase
{
    public FooFunctions(Project project, PropertyDictionary properties)
        : base(project, properties)
    {
        // When does this constructor gets called?
    }

    [Function("bar")]
    public static string Bar(string name)
    {
        return "Bar!"; // How to get at project.BaseDirectory?
    }
}

我是 NAnt 扩展的新手,所以我不知道这是否是一个有效的问题,或者我是否应该以不同的方式解决这个问题。

【问题讨论】:

    标签: c# nant


    【解决方案1】:

    很好的问题汤姆。抽象基类 FunctionSetBase 有一个名为 Project 的属性,您可以从 Bar 函数访问该属性。但是,我注意到 Bar 函数被声明为静态的,这并不总是必要的(但没有错)。

    以下内容在 NAnt 世界中应该是完全合法的:

    Function("bar")]
    public string Bar(string name)
    {
        string baseDirectory = Project.BaseDirectory;
        return baseDirectory; 
    }
    

    你有什么问题吗?

    【讨论】:

    • 效果很好,谢谢!对于任何感兴趣的人:每次调用(非静态)Bar 方法时都会调用 FooFunctions 的构造函数。
    猜你喜欢
    • 2012-04-04
    • 2019-04-17
    • 2015-05-16
    • 2013-01-01
    • 2023-01-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多