我正在使用VS Pro Update 3
我有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解决方案?
答案 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结果包含所有基本成员。
这实际上很棒,因为它适合薄控制器的设计。