当前位置:网站首页>.net core踩坑实践

.net core踩坑实践

2022-07-05 06:26:00 艾萨克SU

.net core踩坑

0.错误提示

准确的说是有两个坑,一个关于.net core的版本,另一个关于编译选项的。先贴一下错误信息。

0.1打不开工程

第一个错误就是打不开工程,我装的VS2017,打开一个现有工程时,报错Project file is incomplete. Expected imports are missing
可是这个工程是git库里的,产品都是用的这个。为什么我本地就打不开呢?

0.2 项目无法加载

同样的环境,另一个工程,里面有一个project,在打开sln之后,这个project显示未正常加载,在error list中提示:
Error NU1105 Unable to find project information - The project file may be invalid or missing targets required for restore
而且只有这一个项目是无法加载的,sln中其他可以。

0.3 System.BadImageFormatException

这个问题是在前面的问题解决之后,终于能够打开编译了,可是运行起来却在某个地方报了个错误,就是这个System.BadImageFormatException

1 第一个坑

1.1 VS版本

经过咨询同事,他也没找到原因,但是他问了我一句你没装vs2019啊。我就试着装上了vs2019,然后就发现vs2019能够打开这个项目,一切正常,再次用vs2017就打不开。

1.2 .net core版本

搜索了一下,有些人提是.net core的原因。重新查看了安装环境的说明,里面要求按照.net core 2.1, 我查了,确实是.net core 2.1啊。
后来终于查到了一个关键的地方。
https://stackoverflow.com/questions/49432666/project-file-is-incomplete-expected-imports-are-missing

https://stackoverflow.com/questions/53329290/net-core-2-2-cant-be-selected-in-visual-studio-build-framework/55529011#55529011
看说明:
Issue details: 2.1.6xx & 2.2.2xx version of the sdks are only supported on Visual Studio 2019. VS 2017 needs 2.1.5xx & 2.2.1xx versions of the sdk.

再查看我安装的.net core版本2.1.818,再看看.net core 2.1的下载界面
在这里插入图片描述
上面的2.1.818的visual studio support写的是2019, 下面的2.1.526才是支持vs2017的。
卸载2.1.818,安装2.1.526, VS2017能正常打开工程了。
上面0.1和0.2的问题都解决了。

2.第二个坑

2.1 x86

编译成功,调试,可是在跑到一个调用另一个库的地方抛出了异常,就是这个System.BadImageFormatException,搜索发现,通常都是由于X86和X64的库混用导致的。我知道其他库使用的X86,我看了一下我编译时候选择的平台,是X86啊
在这里插入图片描述

2.2发现端倪

后来是怎么发现的问题呢?我在attach to process的时候,发现有一列type没有显示全,我把这一列拖宽,显示全了,赫然写着managed(V4.0.3xxx) X64.
怎么回事,我选的是x86啊,
点了一下configure manager,
在这里插入图片描述
太有欺骗性了,active solution platform选的是x86,可是各个项目却选的是any cpu,所以最后编出来的是x64 的。

改成x86,重新编译。成功。

3 思考

多点一下,确认。

原网站

版权声明
本文为[艾萨克SU]所创,转载请带上原文链接,感谢
https://blog.csdn.net/jewelsu/article/details/125313251