这是引用包含泛型的 C# 接口的 VB.NET 实现的 FxCop 错误吗?
Posted
技术标签:
【中文标题】这是引用包含泛型的 C# 接口的 VB.NET 实现的 FxCop 错误吗?【英文标题】:Is this an FxCop bug for a VB.NET implementation referencing a C# interface containing generics? 【发布时间】:2014-05-01 11:03:05 【问题描述】:我们在 VB.NET 中有一个引用 C# 库的应用程序。接口定义在 C# 库中,实现在 VB.NET 应用程序中。其中一个接口定义是可空结构的类型化方法。
FxCop 无法正确分析并报错:
读取模块“控制台”时遇到以下错误:无法解析成员引用:[Library, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null]Library.IWithGeneric::GetSomething。
我创建了一个基本的大纲应用程序来证明这一点。
代码是否缺少某些内容以便 FxCop 可以加载模块(它编译和运行时没有警告)? 或者它只是一个 FxCop 错误?
IWithGeneric.cs
namespace Library
public interface IWithGeneric
T? GetSomething<T>() where T : struct;
VbGenericImplementation.vb
Imports Library
Public Class VbGenericImplementation
Implements IWithGeneric
Public Function GetSomething(Of T As Structure)() As T? Implements IWithGeneric.GetSomething
Return New T
End Function
End Class
Root.vb
Module Root
Sub Main()
Dim test As New VbGenericImplementation
Dim result = test.GetSomething(Of Integer)()
System.Console.WriteLine(result)
System.Console.ReadLine()
End Sub
End Module
【问题讨论】:
如你所说,代码编译运行正常,所以代码没有问题。另一方面,FxCop 似乎有问题,要么是因为它找不到 DLL(它在那里吗?),要么是因为它有一个错误。您使用的是哪个版本的 FxCop? 同意,但它可能正在编译和运行,但不是以最佳实践方式完成的。 FxCop 版本 10 (10.0.30319.1) 如果那是真的,你会认为 FxCop 会比炸毁更能让你知道。 我已经向Microsoft提出了这个问题 【参考方案1】:微软已将该问题作为一个“自然解决”的错误关闭:
奇怪的是,这里的 IL 让 FxCop 如此困惑!对于 VS “14”,我们正在从基于 IL 的分析转向基于 Roslyn 的基于源的分析引擎。当我们进行这种过渡时,这类问题应该自然而然地得到解决。
亚历克斯·特纳
高级项目经理
Visual Basic 和 C# 编译器
发件人:http://connect.microsoft.com/VisualStudio/feedback/details/870827/fxcop-10-0-unable-to-process-vb-net-assembly-containing-c-generics-implementation
【讨论】:
以上是关于这是引用包含泛型的 C# 接口的 VB.NET 实现的 FxCop 错误吗?的主要内容,如果未能解决你的问题,请参考以下文章