Visual studio Visual Studio后期生成不喜欢我的条件

Visual studio Visual Studio后期生成不喜欢我的条件,visual-studio,batch-file,visual-studio-2012,post-build-event,Visual Studio,Batch File,Visual Studio 2012,Post Build Event,我有一个生成后条件,如下所示: if $(ConfigurationName)==Release ( echo Update $(TargetName) to be non conflicting "$(SolutionDir)ILMerge\RummageTypeRenamer.exe" -f XamlGeneratedNamespace.GeneratedInternalTypeHelper -t XamlGeneratedNamespace.GeneratedInterna

我有一个生成后条件,如下所示:

if $(ConfigurationName)==Release
(
    echo Update $(TargetName) to be non conflicting
    "$(SolutionDir)ILMerge\RummageTypeRenamer.exe" -f XamlGeneratedNamespace.GeneratedInternalTypeHelper -t XamlGeneratedNamespace.GeneratedInternalTypeHelper$(TargetName) $(TargetName).dll
    del $(TargetName).dll
    ren $(TargetName).Runmage.dll $(TargetName).dll
)
如果我把条件和条件都去掉,这就行了。但如果按原样运行,则会出现错误:

该命令的语法不正确

然后打印出整个语句,条件看起来很好:

如果释放==释放

为什么Visual Studio不喜欢我的条件设置?

在这里找到了解决方案: (见此评论: 我发现整个命令需要在一行上,否则您将得到“退出代码255”)

因此,您的后期构建应该如下所示:

    if $(ConfigurationName)==Release goto _release

    goto _exit

    :_release

    echo Update $(TargetName) to be non conflicting
    "$(SolutionDir)ILMerge\RummageTypeRenamer.exe" -f XamlGeneratedNamespace.GeneratedInternalTypeHelper -t XamlGeneratedNamespace.GeneratedInternalTypeHelper$(TargetName) $(TargetName).dll
    del $(TargetName).dll
    ren $(TargetName).Runmage.dll $(TargetName).dll

    :_exit

试试K&R风格的帕伦:

if $(ConfigurationName)==Release (
    echo Update $(TargetName) to be non conflicting
    ...
)

批处理希望括号与
IF
(+1)位于同一行,用于显示如何在生成后使用rummageTypeRename:)。我知道这超出了主题的范围,但人们仍然可以使用“RummageTypeRenamer post build”搜索字符串进行搜索。为什么仅在发布模式下才需要此程序集?为什么不调试?如果你愿意,我可以问一个单独的问题,并在这里通知你。谢谢。@AndreyK很抱歉,我不记得为什么我需要这个。