在编写Cake插件时,我有以下内容:
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)'
在蛋糕脚本中听起来有些明显不对,但......!
答案 0 :(得分:2)
从您的字段中删除静态修改器。
而不是
private static VaultInfo r = GetVaultInfo("user");
将其更改为
private VaultInfo r = GetVaultInfo("user");
记住应用标准C#规则,在调用任何实例之前初始化静态变量。 (或者我相信)
答案 1 :(得分:0)
我从未使用过蛋糕,但我可以告诉你,你拥有的是无效的C#。您的方法设置为扩展方法,但您尝试从静态上下文中调用它。
将其更改为此应该可以正常工作,并且看起来你在方法中看起来并不像是在使用ICakeContext。
[CakeMethodAlias]
public static VaultInfo GetVaultInfo(string userName)
{
Debugger.Launch();
return new VaultInfo("","","","","");
}
如果您确实需要ICakeContext,则必须在ICakeContext类的实例上调用该方法。