6

我有以下问题:因为 Visual Studio 无法处理链引用,我需要将所有“链引用”-DLL 复制到我程序的 bin 文件夹中。为此,我使用 Robocopy。

唯一的问题是,我在 Visual Studio 构建后事件中输入的命令行拆分不正确。

ROBOCOPY "$(TargetDir)" "$(SolutionDir)Map\bin\$(ConfigurationName)\" *.dll /LOG:RCPY.log

这是我的构建事件。我现在得到的只是:

Gestartet: Fri Jul 06 15:40:30 2012

Quelle : F:\Sicherung\Visual Studio\Projects\Map\Core\Core.GUI\bin\Release\ F:\Sicherung\Visual\
Ziel : F:\Sicherung\Visual Studio\Projects\Map\Core\Core.GUI\bin\Release\Studio\Projects\Map\Map\bin\Release\

Dateien : *.dll

Optionen: /COPY:DAT /R:1000000 /W:30

但是,它在第​​二个路径/参数中的“Visual Studio”的空白处将其拆分。我用引号尝试了所有内容,但要么没有执行 Robocopy(至少日志文件没有被覆盖),要么我得到了显示在上面的这个日志条目......

Visual Studio 显示:

命令 ... 以代码 16 退出

这意味着存在致命错误,主要是由于路径无效。

4

1 回答 1

10

与 xcopy 不同,robocopy 将 \" 视为转义字符,如http://ss64.com/nt/robocopy.html所述:

如果源或目标是“带引号的长文件夹名”,则不要包含尾部反斜杠,因为这将被视为转义字符,即“C:\some path\”将失败,但“C:\some path\”或“C:\一些路径。” 或 "C:\some path" 将起作用。

由于尾部反斜杠已包含在构建后宏中,因此您需要在源和目标参数的末尾添加第二个反斜杠或句点:

ROBOCOPY "$(TargetDir)." "$(SolutionDir)Map\bin\$(ConfigurationName)\." *.dll /LOG:RCPY.log

我建议添加句点,因为这消除了转义字符而不是解决它。

于 2015-03-06T16:01:36.550 回答