WinExe 的 VSCode tasks.json 和 launch.json 依赖于 dll

Posted

技术标签:

【中文标题】WinExe 的 VSCode tasks.json 和 launch.json 依赖于 dll【英文标题】:VSCode tasks.json and launch.json for WinExe dependent on dll 【发布时间】:2021-04-04 02:25:04 【问题描述】:

我正在尝试 - 为了学习 - 为 VSCode 编写 tasks.json 和 launch.json 来构建这个项目:ExportableDataGrid

有两个 .csproj - 一个构建一个“库”,另一个构建一个依赖于库的“WinExe”。

构建成功,但调试器没有启动 .exe 并出现此错误:

Error processing 'configurationDone' request. Unknown Error: 0x80131c30

使用这个 cli:

dotnet build Mm.ExportableDataGrid\Mm.ExportableDataGrid.csproj
dotnet build Mm.ExportableDataGrid.Wpf\Mm.ExportableDataGrid.Wpf.csproj

我收到以下错误:

CSC : error CS5001: Program does not contain a static 'Main' method suitable for an entry point [C:\Users\userid\C-Sharp Projects\ExportableDataGrid\mm.exportabledatagrid.wpf\mm.exportabledatagrid.wpf.csf.csproj]
C:\Users\userid\C-Sharp Projects\ExportableDataGrid\mm.exportabledatagrid.wpf\MainWindow.xaml.cs(13,13): error CS0103: The name 'InitializeComponent' does not exist in the current context [C:\Users\userid\C-Sharp Projects\ExportableDataGrid\mm.exportabledatagrid.wpf\mm.exportabledatagrid.wpf.csproj]
C:\Users\userid\C-Sharp Projects\ExportableDataGrid\mm.exportabledatagrid.wpf\MainWindow.xaml.cs(52,13): error CS0103: The name 'dataGrid' does not exist in the current context [C:\Users\userid\C-Sharp Prp Projects\ExportableDataGrid\mm.exportabledatagrid.wpf\mm.exportabledatagrid.wpf.csproj]

launch.json 和 tasks.json 都位于一个根文件夹中,其中包含来自 github 存档的两个文件夹。

launch.json


    "version": "0.2.0",
    "configurations": [
        
            "name": "Custom .NET Launcher",
            "type": "clr",
            "request": "launch",
            "preLaunchTask": "buildExe",
            "program": "$workspaceFolder/Mm.ExportableDataGrid.Wpf/bin/Debug/Mm.ExportableDataGrid.Wpf.exe",
            "args": [],
            "cwd": "$workspaceFolder",
            "console": "internalConsole",
            "stopAtEntry": false
        
    ]

tasks.json


    "version": "2.0.0",
    "tasks": [
        
            "label":"buildDll",
            "type":"shell",
            "command":"C:/\"Program Files (x86)/\"Microsoft Visual Studio\"/2019/BuildTools/MSBuild/Current/Bin/MSBuild.exe",
            "presentation":
                "clear":true
                ,
            "args":[
                "Mm.ExportableDataGrid\\Mm.ExportableDataGrid.csproj",
                "/t:Build",
                "/p:Configuration=Debug",
                "/p:Platform=\"AnyCPU\""
            ]
        ,
        
            "label":"buildExe",
            "type":"shell",
            "command":"C:/\"Program Files (x86)/\"Microsoft Visual Studio\"/2019/BuildTools/MSBuild/Current/Bin/MSBuild.exe",
            "presentation":
                "clear":true
                ,
            "dependsOn":"buildDll",
            "args":[
                "Mm.ExportableDataGrid.Wpf\\Mm.ExportableDataGrid.Wpf.csproj",
                "/t:Build",
                "/p:Configuration=Debug",
                "/p:Platform=\"AnyCPU\""
            ]
        
    ]

尽管阅读了很多,但我无法弄清楚这里发生了什么。

    如何调试 0x80131c30 错误? 为什么会出现 CS5001 错误?

另外 - 我能够在没有调试的情况下运行,没有问题。似乎是附加调试器的问题。

【问题讨论】:

没有任务buildExe 我的错,有但我不小心把它从帖子里剪掉了。已更新。 【参考方案1】:

我在遇到问题数周后才发现问题。

解决方法是创建一个指定“x64”的“My_Project.runsettings”文件,并在解决方案的 settings.json 中使用“omnisharp.testRunSettings”:“Path_To_My_File\My_Project.runsettings”引用它

详细解释请看我在github上的回答:https://github.com/OmniSharp/omnisharp-vscode/issues/4361#issuecomment-858540496

【讨论】:

以上是关于WinExe 的 VSCode tasks.json 和 launch.json 依赖于 dll的主要内容,如果未能解决你的问题,请参考以下文章

VS Code配置链接库文件

delphi 调用exe 无输出

根据项目配置更改 csproj OutputType

goland打包linux可执行程序

通过参数显示控制台窗口

c++调用子进程捕获输出(windows,linux)