.NET中的编译、程序调用
- .NET中的各种语言写的代码编译出来exe、dll等文件其实都是中间语言代码,双击时会调用.net framework来执行
- c、c++编译出来的exe应该已经是机器码了,双击运行时是操作系统直接执行
- Python用工具打包出来的exe就不知道了,外层是机器码由系统直接执行,然后再调用Python来解释执行?
- c#可以直接引入dll、exe作为依赖
- 如果是.net编写的,那么可以直接调用其中的类、函数等
- 被依赖的是debug版本才能调试进去
- 如果是c++等编写的,那么只能用特定的语法(如DLLImport)调用c++中指明了要export的函数?
- 如果是.net编写的,那么可以直接调用其中的类、函数等
- 如何调用正在运行的另一个exe或进程中的函数并获取数据?
- 编译
-
MSBuild
- .net framework提供的标准编译器?装上.net framework就行了?
- 使用MSBuild还原Nuget包
- NuGet 4.0+和MSBuild 15+(VS 2017以上或独立下载),才能使用MSBuild来还原Nuget包,否则会报错说没有restore开关。
- 同时必须以PackageReference的方式引入的Nuget包才能被MSBuild进行restore。
- VS中可以右击选择将package.config迁移到新的PackageReference的方式来引入Nuget包,这种方式和.NET Core的方式保持一致。
- (除了MSBuild,也可以使用vs、nuget.exe(nuget restore)、dotnet CLI 命令行(dotnet restore)等方式来还原nuget包)[https://docs.microsoft.com/en-us/nuget/consume-packages/package-restore#restore-using-msbuild]
- 命令
- (手册)[https://docs.microsoft.com/zh-cn/visualstudio/msbuild/msbuild-command-line-reference?view=vs-2019]
- msbuild.ext /help
- switch(开关)可以使用/xxx的方式,也可以使用-xxx的方式
MSBuild.exe [Switches] [ProjectFile] "C:\Program Files (x86)\Microsoft Visual Studio\2017\Professional\MSBuild\15.0\Bin\msbuild.exe" -t:build -restore /consoleloggerparameters:ErrorsOnly /maxcpucount /nologo /property:Configuration=Release /verbosity:quiet "CFChecker.sln"
- 位置与下载
- 每个.net framework版本下都有一个,路径一般是C:\Windows\Microsoft.NET\Framework\v4.0.30319\MSBuild.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 Studio\2017\Professional\Common7\IDE\devenv.exe
-