VS Code 的launch.json和tasks.json 簡介,移除某個 `nuget` 包

風靈使發表於2018-07-23

##launch.json 簡介
1.環境 Windows,.NET Core 2.0,VS Code

dotnet> dotnet new console -o myApp

2.launch.json配置檔案

{
   // 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": [
        {
            "name": ".NET Core Launch (console)",
            "type": "coreclr",
            "request": "launch",
            "preLaunchTask": "build",
            // If you have changed target frameworks, make sure to update the program path.
            "program": "${workspaceFolder}/myApp/bin/Debug/netcoreapp2.0/myApp.dll",
            "args": [],
            "cwd": "${workspaceFolder}/myApp",
            // For more information about the ‘console‘ field, see https://github.com/OmniSharp/omnisharp-vscode/blob/master/debugger-launchjson.md#console-terminal-window
            "console": "internalConsole",
            "stopAtEntry": false,
            "internalConsoleOptions": "openOnSessionStart"
        },
        {
            "name": ".NET Core Attach",
            "type": "coreclr",
            "request": "attach",
            "processId": "${command:pickProcess}"
        }
    ,]
}

launch.json

  • name:配置名稱,在啟動配置下拉選單中顯示
  • type:配置型別
  • request:請求配置型別(一般為launchattach)執行或附加
  • preLaunchTask:除錯會話前要執行的任務
  • program:程式Build以後生成的dll,預設是${workspaceFolder}/bin/Debug/(target-framework)/(project-name.dll)
  • workspaceFolder:正在除錯的程式的工作目錄的路徑。預設為當前工作區(即使用Code命令進入的目錄)
  • target-framework:框架
  • args:傳遞給程式的命令列引數
  • cwd:專案目錄
  • console:啟動除錯目標的位置
  • stopAtEntry:偵錯程式是否在目標的入口點停止,預設為 false
  • internalConsoleOptions:內部除錯控制檯的控制行為
  • processId:要附加到的程式 id。使用 “$ {command:pickProcess}
    以獲取要附加到的正在執行的程式的列表。如果使用 “processId”, 則不應使用 “processName”。

注:在.NET Core 1.0版本中
externalConsoleConsole單獨啟動配置,開發console時,如果需要輸入後除錯,將值設定為true,將console單獨啟動即可。


##tasks.json 簡介

1.執行命令:dotnet> dotnet new console -o myApp

2.tasks.json檔案配置:

{
    "version": "2.0.0",
    "tasks": [
        {
            "label": "build",
            "command": "dotnet",
            "type": "process",
            "args": [
                "build",
                "${workspaceFolder}/myApp/myApp.csproj"
            ],
            "problemMatcher": "$msCompile"
        }
    ]
}
  • tasks:任務配置,通常是外部任務執行程式中已定義任務的擴充
  • label:任務的使用者介面標籤
  • command:要執行的命令。可以是外部程式或 shell 命令(這裡一般表示使用dotnet命令)
  • type:定義任務是被作為程式執行還是在 shell 中作為命令執行
  • args:在呼叫此任務時傳遞給命令的引數(在.NET Core 1.0 中,"build"在taskstaskname標籤下)
  • problemMatcher:要使用的問題匹配程式。可以是字串或問題匹配程式定義,或字串和問題匹配程式陣列結合起來就是告訴powershell執行
    dotnet build {workspaceFolder}/myApp/myApp.csproj

##.NET Core 環境下使用命令列移除某個 nuget 包的具體方法

.NET Core 使用Nuget包一般是先寫入csproj檔案,然後下載儲存在\bin\Debug\netcoreapp2.0\publish\下,所以可以採用如下方案進行刪除操作(其中netcoreapp2.0.NET Core版本)。

第一種:修改配置和手動刪除檔案(不建議)

對於任何系統環境下都有效,直接修改csproj檔案,nuget包都包含在這個檔案下,修改後刪除你本地相同包名稱的檔案就行。

例如:刪除<PackageReference Include="Microsoft.AspNetCore.Session" Version="2.0.1" />這行程式碼後(本行刪除後重新開啟專案,該nuget包就被專案移除了),刪除 專案位置\bin\Debug\netcoreapp2.0\publish\Microsoft.AspNetCore.Session.dll 檔案就可以刪除該nuget包。

第二種:採用 Nuget 包管理命令(建議)

使用如下命令進行Nuget包的刪除操作(對於所有安裝.NET Core 的系統都通用):

以刪除Microsoft.AspNetCore.Session包為例:在專案目錄下使用如下命令即可,由於沒有安裝Linux下的.NET Core
所以在Windows下做演示。

F:\文件\Visual Studio Code\MyWeb\MyWeb.Web>dotnet remove MyWeb.Web.csproj package Microsoft.AspNetCore.Session
info : Removing PackageReference for package 'Microsoft.AspNetCore.Session' from project 'MyWeb.Web.csproj'.

大家可以參考官網說明:https://docs.microsoft.com/zh-cn/nuget/tools/dotnet-commands

其中移除命令的具體使用如下:

使用情況: dotnet remove <PROJECT> package [選項] <PACKAGE_NAME>

引數:
<PROJECT>要操作的專案檔案。如果未指定檔案,則命令會在當前目錄下搜尋一個檔案。
<PACKAGE_NAME>要刪除的包引用。

相關文章