Visual studio Windows命令行:我发现很难将反斜杠跟踪路径作为程序参数传递;是否有最佳实践?

Visual studio Windows命令行:我发现很难将反斜杠跟踪路径作为程序参数传递;是否有最佳实践?,visual-studio,batch-file,cmd,Visual Studio,Batch File,Cmd,我遇到了这样的问题。使用Visual Studio 2010,我希望将我的postb.exe添加为生成后事件操作,如下所示: postb.exe "$(SolutionDir)" "$(TargetDir)" #include <stdio.h> int main(int argc, char **argv) { if(argc<3) { int i; printf("Need 2 params, only %d given.\n",

我遇到了这样的问题。使用Visual Studio 2010,我希望将我的postb.exe添加为生成后事件操作,如下所示:

postb.exe "$(SolutionDir)" "$(TargetDir)"
#include <stdio.h>

int main(int argc, char **argv)
{
    if(argc<3) {
        int i;
        printf("Need 2 params, only %d given.\n", argc-1);
        for(i=1; i<argc; i++)
            printf("  argv[%d]=%s\n", i, argv[i]);
        return 1;
    }
    printf("Your .sln dir is: %s\n", argv[1]);
    printf("Your .exe dir is: %s\n", argv[2]);
    return 0;
}

我的postb.exe是用C编写的,如下所示:

postb.exe "$(SolutionDir)" "$(TargetDir)"
#include <stdio.h>

int main(int argc, char **argv)
{
    if(argc<3) {
        int i;
        printf("Need 2 params, only %d given.\n", argc-1);
        for(i=1; i<argc; i++)
            printf("  argv[%d]=%s\n", i, argv[i]);
        return 1;
    }
    printf("Your .sln dir is: %s\n", argv[1]);
    printf("Your .exe dir is: %s\n", argv[2]);
    return 0;
}
输出变得可用:

Your .sln dir is: G:/w/test/big job/
Your .exe dir is: G:/w/test/big job/Debug/

但这是一条令人沮丧的迂回之路。对于此类问题,有什么最佳做法吗?

如果您只想去掉尾随斜杠,可以使用属性函数,这已经比batchfile解决方案好得多了:

"$(SolutionDir.Trim('\'))"

(尽管如评论所述:我认为这不是您真正的问题)

Hmm,不,您在输出窗口中显示的内容不可能由后期生成事件生成。它使用$(TargetPath)而不是$(TargetDir)。不知怎么搞砸了双引号,反斜杠不是cmd.exe的转义字符,^is。更新您的问题以显示输出窗口的真实内容。我的屏幕截图都是忠实的屏幕截图。那么“显示输出窗口的真实内容”是什么意思呢?非常好的提示。我正在通过Visual Studio实现MSBuild的强大功能。