.NET Core - 无法加载文件或程序集

4
我正在尝试在aspnet Core 1.1应用程序中使用自定义DLL(4.5框架)。我正在使用Microsoft.NETCore.Portable.Compatibility。当我运行项目并尝试调用库项目的某个类时,vs2017会抛出以下异常。
Could not load file or assembly 'ApiHelperSock, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null'. O sistema não pode encontrar o arquivo especificado.

如果我检查bin\Debug\netcoreapp1.1,我可以在这里看到我的dll文件。

这是我的project.json文件。

{
  "compilerOptions": {
    "noImplicitAny": false,
    "noEmitOnError": true,
    "removeComments": false,
    "sourceMap": true,
    "target": "es5"
  },
  "exclude": [
    "node_modules",
    "wwwroot"
  ]
}

有什么想法吗?
--- 编辑 ---
尝试使用我的dll设置nuget包,在尝试导入时出现以下错误:
The package ApHelperSock 1.0.0 isn't compatible with netcoreapp1.1 (.NETCoreApp,Version=v1.1). The package ApiHelperSock 1.0.0 supports: net (.NETFramework,Version=v0.0)               

尝试创建一个.NET Framework库项目,将其导入到此处,然后从我的aspnetcore应用程序中调用该库,但没有成功。


1
据我所知,在VS2017 ASP.NET Core项目模板中没有project.json文件。 - Sanket
@Sanket:嗯,当你将旧项目以文件夹的形式打开而不是通过*.sln/*.xproj在VS2017中打开时,你仍然可以打开旧的project.json项目。VS不会建议你进行迁移。 - Tseng
1
顺便提一下,发布的 JSON 文件不是 project.json,而是包含 TypeScript 选项的 tsconfig.json 文件。 - Tseng
2个回答

6
您不能自动地在.NET Core应用程序中使用.NET 4.5库!您的库必须定位到netstandard1.0或更高版本。
将您的库转换为netstandard1.0(4.5.2)或netstandard1.2(.NET 4.5.2)项目。如果您使用的是仅限于.NET 4.5的API,则还需要添加net45/net452目标,并使用#ifdef NET45预处理器指令,以使��内部的代码仅编译为net452,而不是其他平台。
在.NET Core 2.0中,您将能够引用普通的.NET 4.5库,但同样的限制适用,并且您在使用它时必须非常小心:只有当引用的库仅使用在.NET Standard 2.0上可用的API时,它才能在.NET Core上正常工作!!!
使用任何其他API都会在运行时导致程序崩溃!这个选项仅适用于需要引用.NET 4.5库但尚未为.NET Standard 2.0移植的人(即孤立的NuGet软件包)。

0

感谢 Panagiotis Kanavos(在我的最近重复问题上发表评论)

首先,切换到 .NET 6。.NET 5 将于2022年5月到达终止支持期,距离现在只有3个月。.NET 6 是长期支持版本,并具有全新的功能完备的 Windows Forms 设计器。其次,您无法使用 .NET(Core)5 或 6 中的 .NET 旧代码。您无法共享任何与 UI 相关的代码,因为 .NET 旧版仅支持 .NET Standard 2.0,而该版本不支持 Windows Forms。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接