简体   繁体   English

为什么我在 Visual Studio 2019 Output 与管理员开发 cmd 提示之间得到不同的 MSBuild 行为

[英]Why am I getting different MSBuild behavior between Visual Studio 2019 Output vs admin dev cmd prompt

Given:鉴于:
Visual Studio 2019 C# Console Application Visual Studio 2019 C# 控制台应用程序
.Net Framework 4.6.1 .Net 框架 4.6.1

I'm just testing a simple AfterBuild target with a simple message.我只是用一条简单的消息测试一个简单的AfterBuild目标。 However, I'm getting different behavior between editor output and admin cmd prompt.但是,我在编辑器 output 和管理员 cmd 提示符之间得到了不同的行为。 Message doesn't show up in output window but it does in cmd prompt.消息未显示在 output window 中,但它出现在 cmd 提示符中。

在此处输入图像描述

<?xml version="1.0" encoding="utf-8"?>
<Project ToolsVersion="15.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
  <Import Project="$(MSBuildExtensionsPath)\$(MSBuildToolsVersion)\Microsoft.Common.props" Condition="Exists('$(MSBuildExtensionsPath)\$(MSBuildToolsVersion)\Microsoft.Common.props')" />
  <PropertyGroup>
    <Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>
    <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>
    <ProjectGuid>{C59B258B-6313-4F51-A5DE-7E8C2D339F63}</ProjectGuid>
    <OutputType>Exe</OutputType>
    <RootNamespace>ConsoleApp1</RootNamespace>
    <AssemblyName>ConsoleApp1</AssemblyName>
    <TargetFrameworkVersion>v4.6.1</TargetFrameworkVersion>
    <FileAlignment>512</FileAlignment>
    <AutoGenerateBindingRedirects>true</AutoGenerateBindingRedirects>
    <Deterministic>true</Deterministic>
  </PropertyGroup>
  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">
    <PlatformTarget>AnyCPU</PlatformTarget>
    <DebugSymbols>true</DebugSymbols>
    <DebugType>full</DebugType>
    <Optimize>false</Optimize>
    <OutputPath>bin\Debug\</OutputPath>
    <DefineConstants>DEBUG;TRACE</DefineConstants>
    <ErrorReport>prompt</ErrorReport>
    <WarningLevel>4</WarningLevel>
  </PropertyGroup>
  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' ">
    <PlatformTarget>AnyCPU</PlatformTarget>
    <DebugType>pdbonly</DebugType>
    <Optimize>true</Optimize>
    <OutputPath>bin\Release\</OutputPath>
    <DefineConstants>TRACE</DefineConstants>
    <ErrorReport>prompt</ErrorReport>
    <WarningLevel>4</WarningLevel>
  </PropertyGroup>
  <ItemGroup>
    <Reference Include="System" />
    <Reference Include="System.Core" />
    <Reference Include="System.Xml.Linq" />
    <Reference Include="System.Data.DataSetExtensions" />
    <Reference Include="Microsoft.CSharp" />
    <Reference Include="System.Data" />
    <Reference Include="System.Net.Http" />
    <Reference Include="System.Xml" />
  </ItemGroup>
  <ItemGroup>
    <Compile Include="Program.cs" />
    <Compile Include="Properties\AssemblyInfo.cs" />
  </ItemGroup>
  <ItemGroup>
    <None Include="App.config" />
  </ItemGroup>
  <Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" />
  <Target Name="AfterBuild">
    <Message Text="Testing 123"/>
  </Target>
</Project>

Visual Studio uses minimal build output verbosity by default (you can check it via Tools->Options->Projects and Solutions->Build and Run->MSBuild project build output verbosity option), while in command line it's set to normal by default. Visual Studio 默认使用minimal构建 output 详细度(您可以通过工具->选项->项目和解决方案->构建和运行->MSBuild 项目构建 output 详细度选项检查它),而在命令行中默认设置为normal Therefore you can see the message in command line, but not in the VS output.因此,您可以在命令行中看到该消息,但在 VS output 中看不到。

You should change the option in Visual Studio or set the Importance of message to High您应该更改 Visual Studio 中的选项或将消息的Importance设置为High

<Message Text="Testing 123" Importance="High"/>

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM