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

时间:2015-05-12 09:51:55

标签: c# .net 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步:为了确保我的项目可以使用实体框架,我使用了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

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

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

1 个答案:

答案 0 :(得分:7)

哇好的。我发现了问题。

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

我在项目中的检查如下:

  1. 右键单击C#Project>属性>申请>看看目标框架(我的情况是4.5.1)
  2. 重复VB.NET项目的步骤>属性>申请>看看目标框架(我的情况是4.5)
  3. 将VB.NET项目的.NET Framework设置为与C#项目的.NET Framework相匹配,然后在弹出的对话框中单击“是”。
  4. 重建项目
  5. 这解决了我的问题。