主要问题:

  • 看网上c#开发与 .net关系云里雾里,搞清楚
  • .NET SDK 和 .NET Framework区别?
  • 下.net 6还是7?【我选7】
  • cs code无法跳转方法,F12无效,右键丢失F12 【按照提示下载dotnet framework 4.7.1sdk即可】
  • OmniSharp是什么
  • 需要额外安装mono NuGet吗?(好像是mac才需要)【哦 nuget类似java中maven】

1. unity mono .net c#关系

Unity 与Mono和.Net的关系

这篇讲的简炼易懂

在这里插入图片描述
Mono,CLR,.net,Net Framework之间的关系

  • .Net:以下这些技术的统称。是一个平台,而.NET平台有一个实现标准,叫做.Net Standard;
  • .Net Framework/.Net Core/Mono:实现了这个标准,其选择的组件不一定相同
  • CLR:Common Language Runtime 一个执行引擎,用于进行一类程序(CLI),提供类型系统、垃圾回收、JIT等功能;目前有3个主要实现,分别为coreclr用于.Net Core、desktop clr用于.Net Framework(有了coreclr之后才获得的一个相对”名称)、Mono(没人给其中的runtime部分单独取名)

我这里大概理解下,clr类似java虚拟机jvm,就像jvm有多个实现,clr有限定windows平台的.net framework和跨平台的mono,以及后面整合所有平台进行大一统的.net core(存疑),都是基于.net标准的不同实现,unity因为跨平台性选择了mono。

搜到这篇回答,十分棒
魅力.NET:从Mono、.NET Core 说起
在这里插入图片描述
在这里插入图片描述
简单说就是源代码通过编译器编译成中间语言CIL,然后通过CLR转换成机器码,基本搞懂了这些术语关系。

unity+vscode 开发环境

首次用VsCode调试unity的c#和lua代码的踩坑记录

应该就是vscode 配置unity问题了,今晚继续搞一下,也运行调试不了,这真的…

.NET SDK 和 .NET Framework区别?

在这里插入图片描述
在这里插入图片描述
看起来就是用这个.net 7.0开发就行了,包含文档 库 用例啥的,就像jdk1.8这种,但如果要查看.net的低版本实现,还是要下对应目标包(target pack),就像下载jdk1.5 jdk1.6去查看历史实现一样

所以现在就是看下 dotnet 7.0还是6.0

参考链接
知乎
StackOverflow

下载.net 6.0 还是7.0的sdk?

我擦,怎么没人说阿,那我就按高版本的开发了,我看5以下的都不长期支持了,还有个8.0的,算了先用7.0,以后熟了再说
在这里插入图片描述
可以看到这里sdk确实包含runtime了,就像jdk自带jvm一样?

cs code无法跳转方法,F12无效,右键丢失F12

下完sdk,F12就出来了
在这里插入图片描述
但跳转会报错
在这里插入图片描述
日志有这些东西,但4.7.1已经安装了阿,重启下试试
在这里插入图片描述
在这里插入图片描述
重启后连F12都消失了emmm…
在这里插入图片描述
但为啥Animator这个都能自动补全阿,哦应该是其他插件补的,为啥,哪个sdk有问题?
欸 我发现了,从unity打开cs文件就有F12了,单独打开就没有,估计需要项目空间?
但报错问题依旧没解决!(明天继续吧,睡觉。算是有个小突破)

继续
啊?还要下载4.7.1开发包?
在这里插入图片描述
看很多说改extension c# always use mono,那个应该是mac才有的问题,我这是win11,所以问题还是不一样。

那就按照提示下载dotnet framework 4.7.1sdk
在这里插入图片描述
然后就成功了!
在这里插入图片描述
感谢先行者:
解决 使用VisualStudioCode无法跳转到定义 F12不起作用
虽然解决了,但还是有些一头雾水,对于windows,dotnet framework作用是什么,为什么有了dotnet core sdk还要这个sdk?对于mac来说为什么还要mono?之后有空再继续补充吧。

能够跳转给了我一剂强心剂,哦耶!!!!

Logo

华为开发者空间,是为全球开发者打造的专属开发空间,汇聚了华为优质开发资源及工具,致力于让每一位开发者拥有一台云主机,基于华为根生态开发、创新。

更多推荐