随笔-2021-11-10

SDKStyle的Framework项目使用旧版项目文件生成的Nuget包遇到的问题

简介

C#从NetCore之后使用了新版的项目文件,SDK-Style项目,新版本的项目文件再VS中显示更加简洁明了,项目自定义配置更加方便,并且nuget依赖保存在项目文件中且还原路径在系统用户目录(不会出现以前的解决方案目录改变导致packages文件夹相对路径改变,导致部分nuget还原失败)

官方文档

所以,C#的项目文件类型分为两种,个人推荐使用第一钟

  1. SDK-Style风格项目文件(NetCore之后默认使用,Framework可升级为这个)
  2. .NetFramework默认旧版本的项目文件

注:如果使用SDK-Style风格项目文件的项目使用非字符串的资源文件,如果该项目框架版本不支持System.Resources.Extensions包,则无法使用dotnet cli进行编译,只能使用msbuild和visualstudio。


问题

最近遇到使用SDK-Style风格的.NetFramework4.0的Winform项目,该项目依赖了一个使用旧版本项目文件和Nuget.exe生成的nuget包,当项目所有的控件窗体数量超过两三千后,就会出现无法加载符号进行断点调试。

起初以为是代码问题,最后把那个项目的类一个一个删,最后删了一个控件后就可以调试了,以为是这个控件的坑,结果发现只是个普通的按钮,然后发现删除任意一个控件都可以调试,在增加任意一个控件或窗体就不可以了,才发现是控件实例数量问题,但是在其他控件数量更多的项目测试并不会。最后一个类一个类逐步排查才发现是和这个nuget包有冲突。

最后排查出是控件数量和那个nuget包依赖,只要两者同时满足,就会出现这个问题,但是我自己用Framework版项目文件生成的nuget包却无法重现该问题,最后因为时间关系只能排查到这了。


解决方案

最后把原来的.NetFramework项目升级成SDK-Style风格项目文件后,在生成nuget包就没出现这个问题了。


所以,还是推荐使用SDK-Style的的项目文件,能适配各种新特性新功能。

SDKStyle的Framework项目使用旧版项目文件生成的Nuget包遇到的问题的更多相关文章

  1. Python之路【第二十篇】:python项目之旧版抽屉新热榜

    旧版抽屉新热榜 代码如下: <!DOCTYPE html> <html lang="en"> <head> <meta charset=& ...

  2. Play!framework 项目部署到Tomcat

    Play Framework有自带的服务器,也可部署到其他服务器上.这里讲解下如何将Play的项目部署到Tomcat. 1.准备war包 首先进入play目录: 比如我的: cd C:\play-1. ...

  3. Fiddler抓包HTTPS捕捉旧版App

    “现在可以公开的情报:简易操作Fiddler抓包可能” 任何App的更新都限于苹果开发者规定,有时为了上架不得已放弃一些真正实用的功能,比如视频音频的直接下载,脚本的直接导入,手机上IPA的直接安装等 ...

  4. 使用了旧版nuget的.net项目在git中的问题

    曾几何时,使用nuget包管理项目依赖还需要将nuget执行程序及其配置文件包含在项目中. 如上图所示,在解决方案文件夹中,有专门为nuget程序设置的 .nuget 子目录. 当将项目纳入git管理 ...

  5. 如何移植.NET Framework项目至.NET Core?

    公司的项目一直采用.NET框架来开发Web项目.目前基础类库均为.NET Framework 4.6.2版本.Caching, Logging,DependencyInjection,Configur ...

  6. (转)Resources和AssetBundle(新旧版)学习

    Resources:   Resources的缺点:1.与显示Inspector上直接引用相比,Resources使用不方便.     2.不管你Resources上的资源是否调用了,当你发布的时候, ...

  7. Arcgis API For IOS扩展AGSDynamicLayer新旧版API对比

    AGSDynamicLayer(ForSubclassEyesOnly) Category Reference Description This category organizes the meth ...

  8. Framework项目持续集成(jenkins)及集合SonarQube

    目录 Framework项目持续集成及集合SonarQube - 前言 CI/CD是什么 -- jenkins 什么是sonarqube?什么是CodeReview? 什么是sonarqube? 什么 ...

  9. 结对编程项目——四则运算vs版

    结对编程项目--四则运算vs版 1)小伙伴信息:        学号:130201238 赵莹        博客地址:点我进入 小伙伴的博客 2)实现的功能: 实现带有用户界面的四则运算:将原只能在 ...

随机推荐

  1. appium日志

    2020-10-02 00:44:10:672 [Appium] Welcome to Appium v1.16.0 2020-10-02 00:44:10:673 [Appium] Non-defa ...

  2. python读取文件编码转换问题

    encode(编码)   decode(解码)   encoding(编码格式) #-*- coding:utf-8 -*- import chardet #用于查看编码 with open(&quo ...

  3. ASP.NET Core 学习笔记 第二篇 依赖注入

    前言 ASP.NET Core 应用在启动过程中会依赖各种组件提供服务,而这些组件会以接口的形式标准化,这些组件这就是我们所说的服务,ASP.NET Core框架建立在一个底层的依赖注入框架之上,它使 ...

  4. RabbitMQ 3.9.7 镜像模式集群与Springboot 2.5.5 整合

    1. 概述 老话说的好:做人要懂得变通,善于思考,有时稍微转个弯,也许问题就解决了. 言归正传,之前我们聊了 RabbitMQ 3.9.7 镜像模式集群的搭建,今天我们来聊聊 RabbitMQ 3.9 ...

  5. C#实例:datagridview单元格合并

    这是替C#微信交流群群友做的一个小实例,目的就是在datagridview选择对应行以后,点击button后获取对应行的ip,并执行相应的操作,其实我觉得这样的话button没必要非放置到datagr ...

  6. MySQL8.0.20下载与安装详细图文教程,mysql安装教程

    MySQL下载与安装(8.0.20版)教程 mysql安装包+mysql学习视频+mysql面试指南视频教程 下载地址: 链接:https://pan.baidu.com/s/1FmLFhGlajBQ ...

  7. 图数据库Neo4j的基本使用及与SpringBoot集成

    Neo4j 官网地址:https://neo4j.com/ 下载地址:https://neo4j.com/download-center/#community 官方入门文档:https://neo4j ...

  8. C++核心编程 2 引用

    引用的基本使用 作用:给变量起别名 ,语法:数据类型 & 别名 = 原名 注意:引用必须初始化,且初始化之后,就不可更改. 引用做函数参数 作用:函数传参时,可以利用引用的技术让形参修饰实参 ...

  9. 题解 [HNOI2007]分裂游戏

    题目传送门 题目大意 有趣的取石子游戏即将开始. 有 \(n\) 堆石头,编号为 \(0,1,2,...,n-1\).两个人轮流挑石头. 在每个回合中,每个人选择三堆编号为 \(i,j,k\) 的石头 ...

  10. java程序远程连接Linux服务器

    JSCH或 Ganymed Ganymed: Ganymed SSH-2 for Java是用纯Java实现SSH-2协议的一个包. 可以利用它直接在Java程序中连接SSH服务器.官网地址为 htt ...