0

在编写蛋糕插件时,我有以下内容:

public static class Aliases
{
[CakeMethodAlias]
public static VaultInfo GetVaultInfo(this ICakeContext context, string userName)
{
    Debugger.Launch();
    return new VaultInfo("","","","","");
} 
}

在我的脚本build.cake中,我有:

private static VaultInfo r = GetVaultInfo("user");

当我运行它时,Cake.exe build.cake我得到

Error: <path>/setup.cake(10,30): error CS0120: An object reference is required for the non-static field, method, or property 'GetVaultInfo(string)'

这听起来像是蛋糕脚本中明显有问题的地方,但是......!

4

2 回答 2

2

从您的字段中删除静态修饰符。

而不是拥有

private static VaultInfo r = GetVaultInfo("user");

将其更改为

private VaultInfo r = GetVaultInfo("user");

记住标准 C# 规则适用,静态变量在调用任何实例之前被初始化。(或者我相信)

于 2017-01-19T14:52:03.813 回答
0

我从未使用过 cake,但我可以告诉你,你所拥有的不是有效的 C#。您的方法设置为扩展方法,但您试图从静态上下文中调用它。

将其更改为此,它应该可以工作,而且看起来您无论如何都没有在方法中使用 ICakeContext 。

[CakeMethodAlias]
public static VaultInfo GetVaultInfo(string userName)
{
    Debugger.Launch();
    return new VaultInfo("","","","","");
}

如果您确实需要 ICakeContext,则必须在 ICakeContext 类的实例上调用该方法。

于 2017-01-19T14:15:44.590 回答