3

我有一个看起来像这样的后期构建条件:

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 不喜欢我的条件?

4

2 回答 2

2

在这里找到了解决方案: How to run Visual Studio post-build events only for debug build(请参阅此评论:我发现整个命令需要在一行上,否则您将得到“退出代码 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
于 2013-10-17T20:35:59.023 回答
0

试试 K&R 风格的括号:

if $(ConfigurationName)==Release (
    echo Update $(TargetName) to be non conflicting
    ...
)
于 2013-10-17T20:36:27.227 回答