在 .Net Standard 项目中,.Net Framework 的 dll 文件无法正常工作。

4

我已经将.Net framework的ddl参考到.Net standard 2.0中。下面会显示以下错误:

System.Reflection.ReflectionTypeLoadException: 'Unable to load one or more of the requested types.
The given assembly name or codebase, '\bin\Debug\netcoreapp2.1\FirstDataBank.DrugServer.API.dll', was invalid.
The given assembly name or codebase, '\bin\Debug\netcoreapp2.1\FirstDataBank.DrugServer.API.dll', was invalid.
The given assembly name or codebase, '\bin\Debug\netcoreapp2.1\FirstDataBank.DrugServer.API.dll', was invalid.
The given assembly name or codebase, '\bin\Debug\netcoreapp2.1\FirstDataBank.DrugServer.API.dll', was invalid.'

在 .Net Framework 项目上,相同的 ddl 能够正常工作,但是在 .Net Standard 上会出现错误。

2个回答

7
".Net Framework dll在 .Net Standard 项目上无法工作" - 是的,这是正常且预期的;如果您需要使用仅适用于 .NET Framework(而不是 .NET Standard)的内容,则应该仅从自身针对 .NET Framework 的项目中使用它;或者,考虑重新定位或多重定位您正在使用的库(如果您可以控制它;否则请询问供应商),最好将其作为一个针对 .NET Standard 的 nupkg 或同时针对 .NET Framework 和 .NET Standard 进行多重定位。

7

我们不支持这个。

你可以在.NET Framework项目中引用一些(但不是全部).NET Standard库,但反过来就不支持。

.NET Standard旨在支持在不同平台之间共享代码,但.NET Framework只支持Windows。

为了帮助您开始学习这个主题,这里有一篇很好的文章可以简要解释: Standard、Framework和Core之间的区别


你可以从.NET Framework项目中引用.NET标准库,但这个过程相对复杂。因为有一个矩阵来确定哪些.NET Framework版本可以针对哪些.NET标准版本进行目标定位,而且即使是这个矩阵也存在问题和过于简化的情况,因为.NET Framework硬编码加载器中已知存在绑定错误。 - Marc Gravell
@MarcGravell 感谢您的澄清,我会调整答案。 - Michael Sander

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