.NET中的编译、程序调用

  • .NET中的各种语言写的代码编译出来exe、dll等文件其实都是中间语言代码,双击时会调用.net framework来执行
    • c、c++编译出来的exe应该已经是机器码了,双击运行时是操作系统直接执行
    • Python用工具打包出来的exe就不知道了,外层是机器码由系统直接执行,然后再调用Python来解释执行?
  • c#可以直接引入dll、exe作为依赖
    • 如果是.net编写的,那么可以直接调用其中的类、函数等
      • 被依赖的是debug版本才能调试进去
    • 如果是c++等编写的,那么只能用特定的语法(如DLLImport)调用c++中指明了要export的函数?
  • 如何调用正在运行的另一个exe或进程中的函数并获取数据?
  • 编译
    • MSBuild

      MSBuild.exe [Switches] [ProjectFile]
      
      "C:Program Files (x86)Microsoft Visual Studio2017ProfessionalMSBuild15.0Binmsbuild.exe" -t:build -restore /consoleloggerparameters:ErrorsOnly /maxcpucount /nologo /property:Configuration=Release /verbosity:quiet "CFChecker.sln"
      
      • 位置与下载
        • 每个.net framework版本下都有一个,路径一般是C:WindowsMicrosoft.NETFrameworkv4.0.30319MSBuild.exe,但是可能版本比较旧
        • vs目录下也有
        • 单独下载。新版的MSBuild属于(Build Tools for Visual Studio 2019)[https://visualstudio.microsoft.com/downloads/]。因此要用vs installers来单独下载Build Tools for Visual Studio 2019来获取MSBuild。
    • Devenv

      • Visual studio提供的,需要安装vs
      • 比较省事,安装vs时会把.net framework、nuget等装上,但比较大,而且可能不适用于.net core在Linux上编译?
      • 路径一般是C:Program Files (x86)Microsoft Visual Studio2017ProfessionalCommon7IDEdevenv.exe
原文地址:https://www.cnblogs.com/wyp1988/p/12743494.html