SDKStyle的Framework项目使用旧版项目文件生成的Nuget包遇到的问题
【SDKStyle的Framework项目使用旧版项目文件生成的Nuget包遇到的问题】随笔-2021-11-10
SDKStyle的Framework项目使用旧版项目文件生成的Nuget包遇到的问题
简介
C#从NetCore之后使用了新版的项目文件,SDK-Style
项目,新版本的项目文件再VS中显示更加简洁明了,项目自定义配置更加方便,并且nuget依赖保存在项目文件中且还原路径在系统用户目录(不会出现以前的解决方案目录改变导致packages文件夹相对路径改变,导致部分nuget还原失败)
官方文档
所以,C#的项目文件类型分为两种,个人推荐使用第一钟
SDK-Style
风格项目文件(NetCore之后默认使用,Framework可升级为这个)- .NetFramework默认旧版本的项目文件
注:如果使用SDK-Style风格项目文件的项目使用非字符串的资源文件,如果该项目框架版本不支持问题 最近遇到使用SDK-Style风格的.NetFramework4.0的Winform项目,该项目依赖了一个使用旧版本项目文件和Nuget.exe生成的nuget包,当项目所有的控件窗体数量超过两三千后,就会出现无法加载符号进行断点调试。System.Resources.Extensions
包,则无法使用dotnet cli
进行编译,只能使用msbuild和visualstudio。
起初以为是代码问题,最后把那个项目的类一个一个删,最后删了一个控件后就可以调试了,以为是这个控件的坑,结果发现只是个普通的按钮,然后发现删除任意一个控件都可以调试,在增加任意一个控件或窗体就不可以了,才发现是控件实例数量问题,但是在其他控件数量更多的项目测试并不会。最后一个类一个类逐步排查才发现是和这个nuget包有冲突。
最后排查出是控件数量和那个nuget包依赖,只要两者同时满足,就会出现这个问题,但是我自己用Framework版项目文件生成的nuget包却无法重现该问题,最后因为时间关系只能排查到这了。
解决方案 最后把原来的.NetFramework项目升级成SDK-Style风格项目文件后,在生成nuget包就没出现这个问题了。
所以,还是推荐使用SDK-Style的的项目文件,能适配各种新特性新功能。
推荐阅读
- 热闹中的孤独
- JAVA(抽象类与接口的区别&重载与重写&内存泄漏)
- 放屁有这三个特征的,请注意啦!这说明你的身体毒素太多
- 一个人的旅行,三亚
- 布丽吉特,人生绝对的赢家
- 慢慢的美丽
- 尽力
- 一个小故事,我的思考。
- 家乡的那条小河
- 《真与假的困惑》???|《真与假的困惑》??? ——致良知是一种伟大的力量