当前位置: 首页 > 知识库问答 >
问题:

Visual Studio在生成、重建和清理解决方案时使用了哪些dotnet core cli命令(或msbuild命令)?

唐海阳
2023-03-14

我想知道Visual Studio在我的dotnet核心应用程序中构建/重建和清理解决方案时使用的确切dotnet cli命令?

我知道dotnet core cli是在msbuild之上构建的,所以当您运行build/Rebuild或Clean Solution时,Visual Studio直接使用msbuild命令,而不是来自dotnet core cli的命令?

对吗?

如果这是正确的,我想知道它在三个操作中使用哪个msbuild命令:

  1. 构建解决方案
  2. 重建解决方案
  3. 清洁溶液

哪些dotnet core cli命令与此等效?

我从这篇文章(dotnet cli和新的vs2017 msbuild之间的关系)中知道,以下命令在dotnet和msbuild中执行构建、重建和清理。

Dotnet cli:

  • 构建:dotnet构建
  • 重建:dotnet build--无增量
  • 清洁:dotnet清洁

Msbuild:

  • 构建:msbuild /t:构建
  • 重建:msbuild /t:重建
  • 清洁:msbuild /t:清洁

我想这还不够?这很好,但我想看看Visual Studio为这些动作制作了什么?

我想知道是否可以更改Visual Studio的行为,使其运行dotnet cli命令而不是msbuid?

研究:

我当时正在Visual Studio中构建一个asp.net核心Web api项目(Visual Studio 2017 Enterprise Version 15.9.11)

构建/重建和清理解决方案时,我在Visual Studio Output中查找,但找不到与dotnet core cli或msbuild相关的任何内容。然后我转到VisualStudio工具/选项/“项目和解决方案”/“构建和运行”并更改了选项:

  • MSBuild项目构建输出详细程度:尝试了“详细”和“诊断”选项
  • MSBuild项目构建日志文件详细程度:尝试了“详细”和“诊断”选项

结果是,在VisualStudio的输出窗口中生成的日志非常大,很难找到用于操作的确切命令。我可以看到输出中的许多地方都使用了msbuild,但要找到确切的命令有点混乱。

我还看到了这个问题(VisualStudio是否在内部使用MSBuild,确切的命令是什么?)

这个答案说:

引述:

似乎没有指定MSBuild命令行选项,而是在Visual Studio中调用了MSBuild API。除非您有Visual Studio源代码进行反向工程,否则无法获得等效的命令行

dotnet core cli msbuild也是这样吗?

感谢您对此事的任何帮助或澄清。

共有1个答案

郑博厚
2023-03-14

我知道dotnet core cli是在msbuild之上构建的,所以当您运行build/Rebuild或Clean Solution时,Visual Studio直接使用msbuild命令,而不是来自dotnet core cli的命令?

对于VS2017,我认为VS IDE调用了msbuild。当清理、生成和重建时直接执行。您可以通过任务管理器或流程监视器轻松检查这一点。

至于上面提到的:似乎没有指定MSBuild命令行选项,而是在Visual Studio中调用了MSBuild API

我认为这是正确的但只适用于eariler vs版本(2010,2013)。我用VS2010测试过,在VS中做与构建相关的操作时,它不会调用MSBuild.exe.所以VS2010中的msbuild不会作为单独的进程执行。

关于msbuild命令VS实际执行的内容:

从现在起,VS2017调用msbuild。exe来构建。净核心或。净外汇项目。

在我看来:

对于仅包含项目的解决方案:

构建解决方案=

重建解决方案=

清洗溶液=

我想每次当我们点击VS中的Build按钮时,它都会从这个框中挑选Configuration和Platform的值,因为这两个参数肯定会传递给MSBuild.exe.

此外,我们可以发现的一件事是,IDE在开始构建之前有一个检查过程:它会检查文件是否过期,然后确定是否需要构建。但这不是您在问题中提出的问题,也不影响您想要的命令,所以我跳过它。

所以实际上我认为上面的命令应该添加一些参数,比如:msbuild-m:8-v:m

另外:虽然我发现VS中与建筑相关的动作会直接调用msbuild.exe。我不确定我上面的命令是100%正确的。恐怕没有人能确保,除了在VS IDE中开发菜单命令的家伙。所以如果我误解了什么,请随时纠正我:)

如果你只是想得到与VS完全相同的东西,你也可以试试开发。exe。这是官方文件中唯一确认构建开关在集成开发环境(IDE)中执行与构建解决方案菜单命令相同功能的地方。

 类似资料:
  • 我有一个c#解决方案(开源,可从这里获得:https://github.com/tzachshabtay/MonoAGS),我可以从Visual Studio 2017(点net框架)和VS for Mac (Mono)编译好它。我也可以在linux和mac上用Travis CI上的msbuild成功编译(https://github . com/tzachshabtay/MonoAGS/blob

  • CommandInvokationFailure:Gradle生成失败。C: /Program Files/Unity/Hub/Editor/2019.2.21f1/Editor/Data/PlaybackEngines/AndroidPlayer/Tools\OpenJDK\Windows\bin\java。exe-classpath“C:\Program Files\Unity\Hub\Edi

  • 本文向大家介绍Docker 清理命令集锦,包括了Docker 清理命令集锦的使用技巧和注意事项,需要的朋友参考一下 杀死所有正在运行的容器  删除所有已经停止的容器  删除所有未打 dangling 标签的镜像  删除所有镜像  为这些命令创建别名 # 杀死所有正在运行的容器. alias dockerkill='docker kill $(docker ps -a -q)' # 删除所有已经停止

  • 本文向大家介绍IIS 7.5 解析错误 命令执行漏洞解决方案,包括了IIS 7.5 解析错误 命令执行漏洞解决方案的使用技巧和注意事项,需要的朋友参考一下 一、漏洞介绍 漏洞影响 IIS7 及IIS7.5 在使FastCGI方式调用php时,在php.ini里设置 cgi.fix_pathinfo=1 使得访问任意文件URL时,在URL后面添加“/x.php”等字符时,该文件被iis当php文件代

  • 本文向大家介绍Git 命令详解及常用命令整理,包括了Git 命令详解及常用命令整理的使用技巧和注意事项,需要的朋友参考一下 Git 命令详解及常用命令 Git作为常用的版本控制工具,多了解一些命令,将能省去很多时间,下面这张图是比较好的一张,贴出了看一下: 关于git,首先需要了解几个名词,如下: 一、新建代码库 二、配置 Git的设置文件为.gitconfig,它可以在用户主目录下(全局配置),