任务47:用VS Code开发和编译调试.net项目

  1. 下载 vs code system版本
    • system版本在下载页面下载按钮下面的 Other platforms 中
    • 如果是 user版,会遇到自动调用32位netcore运行时,没法启动调试(我没在32位系统开发过不知道能不能行,所以还是安装system版本的code吧)
    • 找到扩展面板,搜索C#扩展安装好扩展
  2. 安装.NetCore SDK,下载:.NetCore2.2    (建议2.2.300+,3.0以下版本,不能跨大版本。ETCore5.0 不支持netcore3)
  3. 设置netsdk的windows环境变量,在用户变量中设置
    • 配置环境变量名: MSBuildSdksPath
    • 环境变量值:C:\Program Files\dotnet\sdk\2.2.300\Sdks (根据你自己的安装目录)
  4. 安装 .NETFramework
    • 比如打开项目报错缺少 .NETFFramework4.7.1 下载页面选择 4.7.1  下载页面上的 Developer Pack
    • 安装好后,在win控制面板中打开程序和功能中,就可以看到安装好的.NETFramework的SDK与Targeting Pack
  5. 指定项目使用的netcore运行时版本
    • 通过 global.json 文件,定义运行时使用的 .NET Core SDK 版本

    • 命令行到达项目的根目录:dotnet new globaljson --sdk-version 2.2.300,在你的项目中创建一个global.json 文件

    • 命令行在项目的根目录查看此项目netcore版本:dotnet --version,确认是环境变量中设置的netcore版本

  6. 用vs code打开项目,根据提示完成一次"Restore"包还原操作。
    • 如果打开运行过项目,把你的解决方案中的所有项目中的obj目录全部删除,打开code重新Restore

 

用vscode打开项目载入解决方案

可能刚开始用不习惯,不知道打开哪个目录,其实你打开哪个目录,他就在哪个目录创建.vscode,并找到这个目录下及其子目录中的.sln,.csproj载入开发环境。

如果是unity开发的项目,设置好开发扩展工作的情况下,会自动生成解决方案.sln与项目.csproj文件。

如果是非unity项目,可以安装 vscode-solution-explorer 扩展,在vs code中创建解决方案和在方案中创建项目。

 

关于安装了多个netcore版本

下载安装了多个版本的.netcore sdk,通过 global.json 文件,定义运行时使用的 .NET Core SDK 版本

命令行查看多个版本.netcore sdk版本号: dotnet --info

命令行到达你项目的根目录:dotnet new globaljson --sdk-version 2.2.300,在你的项目中创建一个global.json 文件

在多个项目中创建使用不同版本的global.json 文件,然后命令行到达这些项目的根目录:dotnet --version,观察当前使用的.netcore sdk版本

安装好netcore sdk后,要去查一下对应的netcore版本号

这个文章中有创建globaljson的动画演示看看 https://blog.csdn.net/sD7O95O/article/details/81916850

 

关于launch与task

进入下载项目的根目录找到.vscode目录,删除里面的launch.json,tasks.json(没有不用删),然后找到debug面板,自己创建这两个文件

参考下面内容思考如何确定项目编译输出目录,debug运行程序

复制代码
{
   // Use IntelliSense to find out which attributes exist for C# debugging
   // Use hover for the description of the existing attributes
   // For further information visit https://github.com/OmniSharp/omnisharp-vscode/blob/master/debugger-launchjson.md
   "version": "0.2.0",
   "configurations": [
        {
            //编译调试app.dll
            "name": "ET-app (console)",
            "type": "coreclr",
            "request": "launch",
            "preLaunchTask": "buildApp",
            // If you have changed target frameworks, make sure to update the program path.
            "program": "${workspaceFolder}/Bin/App.dll",
            "args": [],
            "cwd": "${workspaceFolder}/Bin",
            // For more information about the 'console' field, see https://aka.ms/VSCode-CS-LaunchJson-Console
            "console": "internalConsole",
            "stopAtEntry": false
        },
        {
            "name": ".NET Core Attach",
            "type": "coreclr",
            "request": "attach",
            "processId": "${command:pickProcess}"
        }
    ]
}
复制代码

结合tasks.json思考,如何编译某个task时,通过"dependsOn"先编译依赖的另一个task。

复制代码
{
    "version": "2.0.0",
    "tasks": [
        {
            "label": "buildFix",
            "command": "dotnet",
            "type": "process",
            "args": [
                "build",
                "${workspaceFolder}/Server/Hotfix/Server.Hotfix.csproj",
                "/property:GenerateFullPaths=true",
                "/consoleloggerparameters:NoSummary"
            ],
            "problemMatcher": "$msCompile"
        },
        {
            "label": "buildApp",
            "command": "dotnet",
            "type": "process",
            //"dependsOn"先编译依赖的buildFix任务
            "dependsOn": [
                "buildFix"
            ],
            "args": [
                "build",
                "${workspaceFolder}/Server/App/Server.App.csproj",
                "/property:GenerateFullPaths=true",
                "/consoleloggerparameters:NoSummary"
            ],
            "problemMatcher": "$msCompile"
        },
        {
            "label": "publish",
            "command": "dotnet",
            "type": "process",
            "args": [
                "publish",
                "${workspaceFolder}/Server/App/Server.App.csproj",
                "/property:GenerateFullPaths=true",
                "/consoleloggerparameters:NoSummary"
            ],
            "problemMatcher": "$msCompile"
        },
        {
            "label": "watch",
            "command": "dotnet",
            "type": "process",
            "args": [
                "watch",
                "run",
                "${workspaceFolder}/Server/App/Server.App.csproj",
                "/property:GenerateFullPaths=true",
                "/consoleloggerparameters:NoSummary"
            ],
            "problemMatcher": "$msCompile"
        }
    ]
}
 
复制代码

 


posted @   Domefy  阅读(369)  评论(0编辑  收藏  举报
编辑推荐:
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
阅读排行:
· winform 绘制太阳,地球,月球 运作规律
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 超详细:普通电脑也行Windows部署deepseek R1训练数据并当服务器共享给他人
· 上周热点回顾(3.3-3.9)
点击右上角即可分享
微信分享提示