将类库引用添加到ASP.NET Core项目

时间:2017-04-03 15:42:52

标签: vb.net reference asp.net-core .net-core

我正在使用VS Pro Update 3

我一直在这里关注指南:https://www.hanselman.com/blog/HowToReferenceAnExistingNETFrameworkProjectInAnASPNETCore10WebApp.aspx

我有3个现有的.NET 4.5.1类库,用VB.NET编写,但我认为这并不重要,因为它全部都在CLR上。
我的ASP.NET核心项目是C#,目标是.NET 4.5.1 这是我的project.json的框架部分:

  "frameworks": {
    "net451": {
      "dependencies": {
        "WebApp.Api.Services": {
          "target": "project"
        }
      }
    }
  },

如果我使用添加现有项目将我的所有VB.NET类库添加到我的解决方案并尝试将它们添加为项目引用,我会收到以下错误:

  

项目XXX类型不受当前项目支持,无法添加   作为参考

我还尝试添加一个C#类库(WebApp.Api.Services),添加VB.NET引用,然后添加C#类库作为ASP核心项目的参考
这样做会显示解决方案资源管理器中的引用,好像我可以使用C#类库中的类型,但我不能在代码中使用VB.NET库的类型。

我还创建了一个NuGet包,但没有运气 我已经读过你可以以某种方式创建一个“包装器”项目,或者Visual Studio可以自动执行此操作。

有没有人尝试过将VB.Net项目添加到ASP Core解决方案?

2 个答案:

答案 0 :(得分:1)

为.NET Core构建的项目不能使用为.NET Framework构建的类库。它们彼此不直接兼容。事实上,当你说:

时,我很困惑
  

我的ASP.NET核心项目是C#,目标是.NET 4.5.1。

如果它的目标是.NET 4.5.1,那么它实际上并不是.NET Core项目。

您应该将类​​库移植到.NET Standard;这样它们可以被广泛的compatible frameworks使用。也可以有一个类库target multiple frameworks

答案 1 :(得分:1)

我设法解决了我的问题。

指南here是正确的,我有另一个我没有意识到的不同问题 我发现System.BadImageFormatException错误导致我出现以下问题Start an asp.net core project as x86 under visual studio 2015
我卸载了x94版本的.NET Core并安装了x86版本。

我仍然无法将对VB.NET库的引用添加到ASP Core项目中,因此我的C#服务'Bridge'库至关重要。

在我的“Bridge”库中,我有可以从ASP控制器返回的模型:

Public BridgeModelA : VB.NETLibrary.ActualModelA
{
…
}

然后扩展

Public static VB.NETLibrary.ActualModelA ToModel(this BridgeModelA)
{
…
}

虽然这些模型的基本成员无法在控制器中访问,但由于ASP proj没有引用VB项目,因此它们由控制器返回,其中JSON结果包含所有基本成员。
这实际上很棒,因为它适合薄控制器的设计。