Здравствуйте, Блондинко, Вы писали:
Б>Post-build event:
Б>Build.exe "$(ProjectDir)" "$(ProjectPath)" "(TargetPath)"
Б>папка проекта D:\Solution path\Project path\
Б>в args приложению прилетает приблизительно следующее
Б>args[0]:
Б>D:\Solution path\Project path" D:\Solution
Б>args[1]:
Б>path\
Б>обратите внимание, что в $(ProjectDic) имя директории проекта должно быть со слешем на конце, а он почему-то заменился на кавычку.
Да, есть такая подстава от МС, проблема как ни странно в cmd.exe.
Там $(ProjectDir) просто заменяется на
%~dp0, т.к. область
CommandLine является областью для текса bat-файла, ну а отсюда и "наследственность".
При выводе "%~dp0" как:
myecho.bat "%~dp0" I am invisible!
где myecho.bat:
@echo off
echo "%~1" "%~2" "%~3" "%~4"
Подвоха не будет, но стоит заменить echo на какой-нить printf.exe, как arg[0] станет равным
%~dp0" I am invisible!.
Проблема в том, что cmd.exe неправильно парсит параметры приложений и скриптов, и конструкция вида
blablabla\ фактически "комментирует" закрывающую кавычку.
Ну, а воркэраунд простой, "комментировать" последний бак-слеш
blablabla\\, либо, если возможно, использовать простой слеш —
blablabla/.
%~dp0 в конце всегда оставляет бак-слеш, поэтому к ниму воркэраунд только один.
[In theory there is no difference between theory and practice. In
practice there is.]
[Даю очевидные ответы на риторические вопросы]
Post-build event:
Build.exe "$(ProjectDir)" "$(ProjectPath)" "(TargetPath)"
папка проекта D:\Solution path\Project path\
в args приложению прилетает приблизительно следующее
args[0]:
D:\Solution path\Project path" D:\Solution
args[1]:
path\
обратите внимание, что в $(ProjectDic) имя директории проекта должно быть со слешем на конце, а он почему-то заменился на кавычку.
объясните мне, пожалуйста, что происходит.
Может это слегка оффтоп, но лично я пришёл к тому что не пользуюсь pre- и post- ивентами из-за их непомерной глюкавости.
Если нужно сделать что-то после билда проекта — делаю ещё один проект, который зависит от основного, в этот проект добавляю exe-файл (ну или dll) из основного проекта и прописываю ему custom build step.
... << RSDN@Home 1.2.0 alpha rev. 717>>