【.NET Standard依赖问题,吐血推荐】未能加载文件或程序集“netstandard, Version=2.0.0.0, Culture=neutr ...

论坛 期权论坛 脚本     
匿名技术用户   2020-12-28 03:32   11   0

前言

折腾了一上午,还是GOOGLE解决了,百度搜出来的都什么玩意?

本以为就是个简单的依赖包安装问题,没太在意standard是个什么东西。

由于之前基本都是用framework,客户机部署的时候缺库就上framework的runtime包,

但是第一次看到这个问题,缺standard?

未能加载文件或程序集“netstandard, Version=2.0.0.0, Culture=neutral

失败是成功的妈妈

先介绍妈妈吧,把这问题搜了之后,出来的一堆方案,统统失效,失败方案如下:

1、下载安装Net Core 2.0 SDK?

抱歉,微软官网下不到安装器,SDK的只有不知道什么zip,估计需要自行编译,没有搞过,放弃;runtime包的下载地址也没有。。那么高版本的装一下呢?装了2.0.9的runtime,无法部署成功。

2、下载standard2.0的运行时安装包吧?

百度不出别的方案了,那么就找个standard2.0的runtime总有的吧;找了一圈,下了一堆standard-2.0.0.zip,有的还是preview。。github上有2.0.0正式版的。但是连接不稳定,所以没成功。

3、基于nuget部署吧?

这个展开的工作就很多了,大概试了下这个命令

nuget install NETStandard.Library -Version 2.0.0

然后在nuget同目录下会得到2.0.0的一个目录,里面有好多dll,激动。

但是dll丢到应用程序的目录下后,出现了新的错误提示

不应出于执行的目的加载引用程序集。只能在仅限反射的加载程序上下文中加载引用程序集。

4、最坑爹的微软:

也不知道从哪儿找到个微软官网的文档连接的,还挺全的,.NET全家桶都在。

看下这段(摘自https://docs.microsoft.com/en-us/dotnet/standard/net-standard):

.NET implementation support

The following table lists the minimum platform versions that support each .NET Standard version. That means that later versions of a listed platform also support the corresponding .NET Standard version. For example, .NET Core 2.2 supports .NET Standard 2.0 and earlier.

.NET Standard 1.0 1.1 1.2 1.3 1.4 1.5 1.6 2.0
.NET Core 1.0 1.0 1.0 1.0 1.0 1.0 1.0 2.0
.NET Framework 1 4.5 4.5 4.5.1 4.6 4.6.1 4.6.1 2 4.6.1 2 4.6.1 2
Mono 4.6 4.6 4.6 4.6 4.6 4.6 4.6 5.4
Xamarin.iOS 10.0 10.0 10.0 10.0 10.0 10.0 10.0 10.14
Xamarin.Mac 3.0 3.0 3.0 3.0 3.0 3.0 3.0 3.8
Xamarin.Android 7.0 7.0 7.0 7.0 7.0 7.0 7.0 8.0
Universal Windows Platform 10.0 10.0 10.0 10.0 10.0 10.0.16299 10.0.16299 10.0.16299
Unity 2018.1 2018.1 2018.1 2018.1 2018.1 2018.1 2018.1 2018.1

看到没,大概意思是Framework 461 支持standard2.0,但是客户机是有461版本的,那么就修复安装吧,因为担心framework没有向下兼容std2.0,所以还是使用了461。但是最后还是不能解决问题。也就是说微软文档有问题,461很可能不能支持std2.0。

这个时候,我想起了谷歌(抱歉,我来晚了),关键词(未能加载文件或程序集 netstandard)第一条就是:

https://stackoverrun.com/cn/q/12364158,里面有朋友提到

NETStandard 2.0.0-preview1 in not compatibility with net461 and net47

那么直接装个4.7.1的framework试下?结果居然成功了。。。

另外,这个链接有提到461最高支持std1.4,从经历看可信度要比官网高一点点:

https://www.cnblogs.com/Leo_wl/p/5525827.html

总结

standard是一种标准,不是实现,core和framework才是其“实例化”的载体。

参考资料

https://github.com/dotnet/standard

https://blog.csdn.net/sD7O95O/article/details/78126417

https://www.nuget.org/packages/NETStandard.Library/2.0.0

https://blog.csdn.net/u011127019/article/details/77196331

https://devblogs.microsoft.com/dotnet/introducing-net-standard/

https://www.cnblogs.com/zjoch/p/6696986.html

分享到 :
0 人收藏
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

积分:7942463
帖子:1588486
精华:0
期权论坛 期权论坛
发布
内容

下载期权论坛手机APP