Visual Studio 2017 宏在构建时显示为空但在宏选择器中不显示

Visual Studio 2017 macros show empty on build but not in macro selector

当我将 post 构建事件添加到我的项目并尝试在编辑 Post-构建 ... 部分中使用宏时,它会显示每个宏的值

但是当构建运行时值显示空白

以下是使用 echo "The project path is:" $(ProjectPath) "end of path"

生成的

我使用的任何宏值似乎都为空

我正在使用以下 csproj

<Project Sdk="Microsoft.NET.Sdk">

  <PropertyGroup>
    <TargetFramework>netstandard1.6</TargetFramework>
    <AssemblyName>Client</AssemblyName>
    <PackageId>Client</PackageId>
    <PackageTags>pkgname</PackageTags>
    <NetStandardImplicitPackageVersion>1.6.1</NetStandardImplicitPackageVersion>
    <PackageTargetFallback>$(PackageTargetFallback);dnxcore50</PackageTargetFallback>
    <GenerateAssemblyConfigurationAttribute>false</GenerateAssemblyConfigurationAttribute>
    <GenerateAssemblyCompanyAttribute>false</GenerateAssemblyCompanyAttribute>
    <GenerateAssemblyProductAttribute>false</GenerateAssemblyProductAttribute>
    <GeneratePackageOnBuild>True</GeneratePackageOnBuild>
    <PostBuildEvent>
      echo on
      echo "The project path is:" $(ProjectPath) "end of path"
      dotnet pack $(ProjectPath)
    </PostBuildEvent>
  </PropertyGroup>


  <ItemGroup>
    <PackageReference Include="NoSQL" Version="1.0.4.3" />
  </ItemGroup>

</Project>

我试过手动编辑 csproj 但无济于事。 post 构建事件中的 csproj 的完整路径确实有效。

我已经确认这发生在多台机器上 运行 VS/15.0.0+26228.9

这是 VS 2017 的未决问题 https://developercommunity.visualstudio.com/content/problem/25206/build-events-window-strips-out-macros-unce-saved.html

似乎有一个错误,像 $(ConfigurationName) 这样的宏环境变量被忽略了,至少在 Visual Studio 2017 版本中是这样。 15.9.11

这对我有用:
在项目文件 (.vbproj)

<Target Name=...> 元素中指定您的脚本
<Project Sdk="Microsoft.NET.Sdk">

    <PropertyGroup>
        ...
        ...
    </PropertyGroup>

    <Target Name="PostBuild" BeforeTargets="PostBuildEvent">
        <!-- For " use &quot; -->
        <Exec Command="
            if $(ConfigurationName) == Debug (
                echo Upload Debug files:
                cmd /c &quot;S:\My Script\Debug_upload.cmd&quot;
            )
            if $(ConfigurationName) == Release (
                echo Upload Release files:
                cmd /c &quot;S:\My Script\Release_upload.cmd&quot;
            )"/>
    </Target>
    ...
<Project Sdk="Microsoft.NET.Sdk">