VSCode调试C#程序及附缺失.dll文件的解决办法

刚开始使用VScode,经过两天的折腾,初步解决了调试C#无法生成.dll文件的问题,现将我的过程叙述如下(使用到.Net Core+VScode+C#插件)。

1.首先在D盘建立一个新的文件夹,我的文件名是C# file,如下:

2.然后打开VS code,通过file -> Add Folder to Workspace选项将刚才建立的新的文件夹加入到工作空间中,如下:

3.通过命令Ctrl+shift+y打开调试控制台(DEBUG CONSOLE),然后选择终端(TERMINAL),会看到当前的工作路径,如下:

4.在当前工作目录,通过键入 dotnet new console,会为我们创建一个新的模板。如果当前的工作空间有多个文件夹,可以选择powershell更换为当前的工作目录,如下:

5.接着,键入dotnet run,会运行刚才创建的新模板,控制台打印出"Hello World!".说明模板创建成功,可以在模板的基础上编写自己的代码了。

6.上述过程可以类比成在Visual studio中创建一个控制台程序,需要进行一些必要的准备工作,创建一个新的模板后,在C# file文件夹中多出来一些文件,可以看作是一些初始化的文件。

7.模板给出的程序,在主函数中只有一句代码:Console.WriteLine("Hello World!");,这就是控制台显示"Hello World!"的原因。

8.由于模板给出的代码,包含的命名空间少,需要自己动手补充,using System; using System.Collections.Generic; using System.Linq; using System.Text;**

9.开始编写代码,本示例的代码如下:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

namespace C__file
{
  class Program
  {
    //定义一个Player类
      class Player
      {
        public int id;
        public int life;

        public Player(int iId,int iLife)
        {
          this.id = iId;
          this.life = iLife;
        }
      }
      //比较函数
      public class PlayerCompare : IComparer<Player>
      {
        //比较Player的id大小
        int IComparer<Player>.Compare(Player a,Player b)
        {
          return a.id.CompareTo(b.id);
        }
      }
    static void Main(string[] args)
    {
      //创建一个列表List
      List<Player> player_list = new List<Player>();
      Random rand = new Random();
      for(int i = 0;i<10;i++)
      {
        int n =rand.Next(100); //随机生成100以内的数
        int n1 = rand.Next(100);
        Player p = new Player(n,n1);
        //在List中添加创建的Player的实例
        player_list.Add(p);

      }
      //对List进行排序
      player_list.Sort(new PlayerCompare());
      foreach(Player p in player_list)
      {
        Console.WriteLine("player id:" + p.id);
      }
    }
  }
}

10.然后按F5键进行调试,选择.NET Core,会自动生成一个launch.json和tasks.json两个文件。如果在VScode的工作目录C# file没有.vscode文件夹,就将其加入到C# file文件夹中。

11.重新按F5键调试程序,结果成功显示如下:

问题总结:

整个过程经历了两天才成功,困扰最大的是在调试过程中,终端(TERMINAL)明明已经没有问题了,生成了.dll文件,但是调试控制台(DEBUG CONSOLE)还是出现错误,提示某路径下没有.dll文件,让你查看launch.json文件,这时要特别注意launch.json文件中的program中的路径与提示的路径是否相符,如果不一样,就会出现问题,不行的话,可以将生成的.dll的路径直接复制到program中。

如上,需要保证launch.json文件中program的路径与生成的.dll路径一致。“${workspaceFolder}”表示当前的文件夹路径,就是一开始的C# file路径“D:\Program Files (x86)\C# file”,而我生成的.dll路径与launch.json是一致的,就没有出现问题。之前一直有问题就是没有将其保持一致所致。

2.生成的.cs文件,文件名修改后会提示出现二义性的problem,这时重启VS code即可。注意在创建新的文件时,文件名不能与关键字相同,否则会出现还原成功但编译失败的情况。

3.按F5键时,如果提示没有生成task build文件(你的文件夹.vscode里也没有tasks.json文件),如下所示:

则生成该文件的步骤如下:

这样tasks.json文件已经在.vscode文件夹中生成了,如下所示:

到此这篇关于VSCode调试C#程序及附缺失.dll文件的解决办法的文章就介绍到这了,更多相关VSCode调试C#缺失.dll内容请搜索我们以前的文章或继续浏览下面的相关文章希望大家以后多多支持我们!

(0)

相关推荐

  • C#生成DLL文件的方法

    本文实例讲述了C#生成DLL文件的方法.分享给大家供大家参考.具体分析如下: Visual C#生成DLL文件 VisualC.Delphi或者VB等编程语言来编写的DLL文件,在编译完成以后,产生DLL文件已经是一个可以直接供计算机使用的二进制文件.但用Visual C#编译器生成的受管代码虽然也是二进制文件,但不是可以直接供计算机使用的原始代码,实质上是一种中间语言(IL)代码,需要经过"下一代窗口服务"( Next Generation Windows Services,简写为N

  • C#使用DllImport调用非托管的代码的方法

    找到GetShortPathName的方法签名, DWORD GetShortPathName(LPCTSTR tpszLongPath,TPTSTR lpszShortPath,DWORD cchBuffer): 非托管及托管数据类型对应关系: LPCTSTR         String LPTSTR           StringBuilder DWORD          int DllImport的导入规则: 1.方法名与Win API完全一样.如果在C#中调用时显示完全不同的方法名

  • C#生成DLL文件的方法小结

    使用csc命令将.cs文件编译成.dll的过程 很多时候,我们需要将.cs文件单独编译成.dll文件, 操作如下: 打开命令窗口->输入cmd到控制台->cd C:\WINDOWS\Microsoft.NET\Framework\v1.1.4322 转到vs.net安装的该目录下->执行csc命令csc /target:library File.cs->在该目录下产生一个对应名字的.dll文件(前提:把.cs文件放到C:\WINDOWS\Microsoft.NET\Framewor

  • C#创建dll类库的图文步骤

    类库让我们的代码可复用,我们只需要在类库中声明变量一次,就能在接下来的过程中无数次地使用,而无需在每次使用前都要声明它.这样一来,就节省了我们的内存空间.而想要在类库添加什么类,还需取决于类库要实现哪些功能.创建一个类库其实是非常容易的,这篇文章就来向大家分享一下如何在C#中创建dll类库. 类库的文件扩展名是 .dll(Dynamic Linkable Library 即动态链接库文件) 类库的好处: 提高程序的性能. 节省时间. 节省内存空间. 现在我们一起来看下如何轻松创建dll类库的.

  • C#将dll打包到程序中的具体实现

    直接进入主题 先来看一个栗子,假设现在有一个第三方dll 复制代码 代码如下: namespace TestLibrary1{    public class Test    {        public void Point()        {            Console.WriteLine("aaabbbccc");        }    }} TestLibrary1.dll 在项目中引用,然后调用其中的方法Test,将输出aaabbbccc 复制代码 代码如下:

  • C#调用Matlab生成的dll方法的详细说明

    其实整个过程比较简单,但是需要心细一点. 需要的工具:VS2005及以上版本,MATLAB2008B及以上版本,另外非常重要的需要安装一个MATLAB Compiler Runtime,这个文件(MCRInstall.exe)在安装完MATLAB之后就会在安装文件夹下存在,需要搜索一下(因为不同版本的MATLAB可能存放位置不同),把它安装一下就OK了. 接下来在MATLAB中写一个m文件,当然是一个函数啦.然后在matlab命令行下运行deploytool,在图形界面里选.net组件,然后进入

  • c#的dllimport使用方法详解

    DllImport是System.Runtime.InteropServices命名空间下的一个属性类,其功能是提供从非托管DLL导出的函数的必要调用信息 DllImport属性应用于方法,要求最少要提供包含入口点的dll的名称.DllImport的定义如下: 复制代码 代码如下: [AttributeUsage(AttributeTargets.Method)]public class DllImportAttribute: System.Attribute{public DllImportA

  • C#中使用IrisSkin2.dll美化WinForm程序界面的方法

    一.添加控件IrisSkin2.dll.方法:        1.右键"工具箱"."添加选项卡",取名"皮肤".        2.右键"皮肤","选择项"弹出对话框        3.点击"浏览",找到IrisSkin2.dll,,next,next,确定.        4.在皮肤里会出现.        5.把SkinEngine拖到设计界面,会出现在下面. 二,把皮肤文件中以ss

  • C# 调用C++写的dll的实现方法

    dll的编写,首先是打开VS新建一个C++的控制台程序,下一步后选择dll以及空文档即可.然后就是添加一个类添加一个方法.方法排头固定格式 extern"C"__declspec(dllexport) 后面加方法即可. 例如如下代码: C++dll代码: 复制代码 代码如下: extern"C"__declspec(dllexport) char* ShowImages(BYTE img[],int w,int h){;} C#调用dll基本也是固定格式,如下样式,

  • PHP调用C#开发的dll类库方法

    有的时候,我们需要在php中利用到其他语言编写的dll类库,如C#编写的dll,方法就是利用PHP new COM方法来调用,在调用之前先要把dll库注册并把程序集放入到全局缓存中. 1. 创建一个 C# Class Library ,命名为:HelloWorld 2. 打开项目的属性,在点选左边的 "Application"(就是第一个tab) , 然后点击Assembly Information 按钮 ,在弹出的Dialog中, 必须在底部勾上: Make assembly COM

  • C#中调用DLL时未能加载文件或程序集错误的处理方法(详解)

    在加载DLL时,出现了如下的异常:未能加载文件或程序集"DMC3000, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null"或它的某一个依赖项. 试图加载格式不正确的程序. 经上网查询后,其原因是x64和x86不兼容的问题.即DLL是x64的,但是VS默认生成的目标平台是x86的,因此,两者的不一致导致异常的出现. 其解决办法如下: 项目->属性->生成->目标平台->x64(与dll平台一致) 以上这篇

随机推荐