【发布时间】:2010-09-17 19:15:37
【问题描述】:
我有一个类库,其中包含一些用 C# 编写的扩展方法和一个用 VB 编写的旧网站。
我想从 VB 代码中调用我的扩展方法,但它们没有出现在 intelisense 中,并且当我访问该站点时出现编译错误。
我已经获得了所有必需的 Import,因为包含在相同命名空间中的其他类在 Intelisense 中表现良好。
任何建议
编辑:更多信息可帮助一些 cmets。
我的实现是这样的
//C# code compiled as DLL
namespace x.y {
public static class z {
public static string q (this string s){
return s + " " + s;
}
}
}
和我这样的用法
Imports x.y
'...'
Dim r as string = "greg"
Dim s as string = r.q() ' does not show in intelisense
' and throws error : Compiler Error Message: BC30203: Identifier expected.
【问题讨论】:
-
您是否在您的VB项目中添加了对c#库的引用?
-
如果库的其余部分正常工作,我想不出任何静态方法调用不起作用的原因。如果您将其设为非扩展方法,它是否有效(只是尝试诊断问题所在)。
-
还有一个问题 - 您确定 VB.Net 项目已更改为针对 .net 3.5 框架吗?我问是因为你提到这是一个旧网站。
-
@rjrapson 来自我的原始帖子“我已经获得了所有必需的导入,因为包含在相同命名空间中的其他类在 Intelisense 中看起来很好。” @ICR 我会试试的。 @rajrapson 是的,我更改了属性中的目标并检查了 web.config 中的所有额外节点
-
您不需要以 .Net 3.5 为目标来使扩展方法起作用,但您确实需要使用 VS2008。如果您要部署站点的未编译版本,则服务器需要安装 .net 3.5,否则将无法正确编译。
标签: c# vb.net extension-methods class-library