Home Articles

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

Asked
Viewed 342 times
1

我正在使用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的Framework部分:

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

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

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

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

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

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

2 Answers

  • 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

    我设法解决了我的问题 .

    指南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结果 .
    这实际上很棒,因为它适合薄控制器的设计 .

Related