VS2017.Net核心(完整框架)项目';s生成后事件获取$(ConfigurationName)的空字符串

VS2017.Net核心(完整框架)项目';s生成后事件获取$(ConfigurationName)的空字符串,.net,msbuild,.net-core,visual-studio-2017,post-build-event,.net,Msbuild,.net Core,Visual Studio 2017,Post Build Event,我正在为一个新项目设置开发环境。这是一个WebAPI项目,它从静态文件中为@angular项目提供服务。为了方便这一点,在编译后,我运行angular cli的build函数,然后将文件复制到wwwroot中。一切都很好 但是,我希望能够运行两个不同的npm脚本,这取决于项目是处于调试模式还是发布模式。在我的构建后脚本中,我尝试了以下方法: if "$(ConfigurationName)" == "Debug" ( npm run build ) else if "$(Configura

我正在为一个新项目设置开发环境。这是一个WebAPI项目,它从静态文件中为@angular项目提供服务。为了方便这一点,在编译后,我运行angular cli的build函数,然后将文件复制到wwwroot中。一切都很好

但是,我希望能够运行两个不同的npm脚本,这取决于项目是处于调试模式还是发布模式。在我的构建后脚本中,我尝试了以下方法:

if "$(ConfigurationName)" == "Debug"
(
   npm run build
)
else if "$(ConfigurationName)"=="Release"
(
   npm run prod
)
但是我越来越

The command "if "" == "Debug"
(
   npm run build
)
else if ""=="Release"
(
   npm run prod
)" exited with code 255.    
似乎没有为ConfigurationName提供任何值。我尝试了调试模式和发布模式,得到了相同的错误。ConfigurationName变量在VS 2017中是否发生了变化

编辑:但是,如果单击“编辑生成后”,然后单击“宏”,则可以看到ConfigurationName有一个值。只是我的剧本看不到

  • $(配置)
    可能适用于您的情况,因为它在构建过程中很早就被赋予了一个值

  • 生成前和生成后事件实际上不适用于“基于SDK的”项目(无需修改),因为在评估生成事件属性时,大多数属性都没有定义。有关更多详细信息,请参阅

  • 我建议您在项目中执行以下操作:

    <Project Sdk="...">
      <!-- other content -->
      <Target Name="RunNpmBuild" BeforeTargets="BeforeBuild" Condition="'$(Configuration)' != 'Release'">
        <Exec Command="npm run build" />
      </Target>
      <Target Name="RunNpmProd" BeforeTargets="BeforeBuild" Condition="'$(Configuration)' == 'Release'">
        <Exec Command="npm run prod" />
      </Target>
    </Project>
    
    
    
    请注意,在
    1.0.*
    CLIs中,生成期间生成的以前不存在的文件可能不会发布-请参阅以了解解决方法

  • $(配置)
    可能适用于您的情况,因为它在构建过程中很早就被赋予了一个值

  • 生成前和生成后事件实际上不适用于“基于SDK的”项目(无需修改),因为在评估生成事件属性时,大多数属性都没有定义。有关更多详细信息,请参阅

  • 我建议您在项目中执行以下操作:

    <Project Sdk="...">
      <!-- other content -->
      <Target Name="RunNpmBuild" BeforeTargets="BeforeBuild" Condition="'$(Configuration)' != 'Release'">
        <Exec Command="npm run build" />
      </Target>
      <Target Name="RunNpmProd" BeforeTargets="BeforeBuild" Condition="'$(Configuration)' == 'Release'">
        <Exec Command="npm run prod" />
      </Target>
    </Project>
    
    
    

    请注意,在
    1.0.*
    CLIs中,在生成过程中生成的以前不存在的文件可能不会发布-请参阅以了解解决方法。

    Aha,谢谢!我转到那个问题,看到了在构建事件之前导入
    的建议,这对我来说很有效。我无法使条件部分正常工作,但我最终只是将其替换为“npm run build-$(ConfigurationName),并使npm的build和prod脚本build Debug和build Release。谢谢你的建议,马丁!添加了一个纯MSBuild版本,如果您感兴趣的话,您将尝试执行该操作。(发布建议仍然适用于所有形式的内容生成)。啊哈,谢谢!我转到那个问题,看到了在构建事件之前导入
    的建议,这对我来说很有效。我无法使条件部分正常工作,但我最终只是将其替换为“npm run build-$(ConfigurationName),并使npm的build和prod脚本build Debug和build Release。谢谢你的建议,马丁!添加了一个纯MSBuild版本,如果您感兴趣的话,您将尝试执行该操作。(发布建议仍然适用于所有形式的内容生成)。