类型未定义 - VB.NET的C#类

Eon*_*Eon 1 .net c# vb.net entity-framework

我坐在一个相当奇怪的错误 - 我相信我按照正确的步骤来解决.

基本上,我的编译器抱怨以下内容:

Type 'InteractionsEntities' is not defined

这是对我所做的一切的解释.我的目标是在我的vb.net项目中使用C#编译的类.

第1步:右键单击我的VB.NET项目 - 添加>参考

第2步:在项目列表之外,我选择了包含InteractionsEntities该类的C#项目并按下确定.

第3步:我在我的vb.net模块中添加了代码行:Imports CsharpProject.CsharpNamespace

第4步:在我的模块中,我添加了一个变量:Private context = new InteractionsEntities- 注意到这一点,Intellisense能够找到我需要的类.

第5步:为了确保我的Project可以使用实体框架,我使用nuget包管理器来安装实体框架.

所以按照上面列出的步骤,我有以下代码:

Imports CsharpProject.CsharpNamespace

Module Module1
    Dim context = New InteractionsEntities()
    Sub Main(properties As String())
            Dim documents = context.Documents.Select(Function(x) x)
            For Each document In documents
                Console.WriteLine(document.Name)
            Next
    End Sub
Run Code Online (Sandbox Code Playgroud)

奇怪的是,Intellisense能够检测到我的C#名称空间中存在InteractionsEntities.在安装entityframework nuget包时,错误将消失 - 我能够访问上下文变量中的属性.我点击"重建所有"的那一刻 - 错误Type 'InteractionsEntities' is not defined返回.将鼠标悬停在命名空间(现在也标记为错误)并单击Error Corrections Options产生没有更正建议.

我错过了中间的一步吗?为什么我的VB.NET项目抱怨该类不存在呢?我也在c#名称空间下测试了其他类(与实体框架无关),并且会产生相同的效果.

Eon*_*Eon 7

哇好的 我发现了这个问题.

发生这种情况时,请确保您的C#项目和VB.NET项目至少在同一.NET Framework版本中编译.

我在项目中的检查如下:

  1. 右键单击C#项目>属性>应用程序>查看目标框架(我的情况是4.5.1)
  2. 重复VB.NET项目>属性>应用程序>查看目标框架的步骤(我的情况是4.5)
  3. 设置VB.NET项目的.NET Framework以匹配C#项目的.NET Framework,然后在弹出的对话框中单击是.
  4. 重建项目

这解决了我的问题.

  • 我只是想知道为什么当您使用高于当前版本的 .NET Framework 版本添加对项目的引用时,他们没有添加警告或类似内容。相反,它给了我不同的编译时错误,这给了我一个弯路,这些错误与实际问题无关 (2认同)