Cygwin 1.7.x无法将Windows路径转换为POSIX路径

时间:2012-02-16 14:59:21

标签: cygwin msbuildcommunitytasks

一年左右因此,我修改了我的一个项目,在安装程序文件名中包含了subversion修订版。 我安装了MSBuild.Community.Tasks.Targets并修改了csproj文件,使其包含:

<Import Project="$(MSBuildExtensionsPath)\MSBuildCommunityTasks\MSBuild.Community.Tasks.Targets" />
...
<SvnVersion LocalPath="$(MSBuildProjectDirectory)" ToolPath="C:\cygwin\bin">
   <Output TaskParameter="Revision" PropertyName="Revision" />
</SvnVersion>
...

这就像一个魅力。但是,在升级到cygwin 1.7之后,运行构建过程时开始出现以下错误:

  

C:\ cygwin \ bin \ svnversion.exe --no-newline   “Z:/ cygdrive / z / dev / myproject / src / winservice”

     

'/ cygdrive / Z的/ dev / myproject的/ SRC / WINSERVICE / Z:/ cygdrive / Z的/ dev / myproject的/ SRC / WINSERVICE'   不存在

     

Z:\ dev \ swiftarhiv \ src \ myproject \ myprojectservice.csproj(200,5):错误   MSB6006:“svnversion.exe”退出,代码为1.完成构建项目

     

“Z:\ dev \ swiftarhiv \ src \ myprojects \ myprojectservice.cspro j”(重建   target(s)) - FAILED。

我尝试将SvnInfo任务的LocalPath参数修改为“。”或者“/ cygdrive / z / dev / myproject / src / winservice”,但是SvnInfo任务有一个令人讨厌的习惯,即无论你放入什么内容都使用windows full path“。”解析为之前使用的路径并将“/ cygdrive / z / dev / myproject / src / winservice”解析为“Z:/ cygdrive / z / dev / myproject / src / winservice”,这再次导致错误。

我可以在Cygwin 1.7中设置一个可以解决我的问题的设置吗?

1 个答案:

答案 0 :(得分:0)

如果您希望能够有意使用特定路径格式,则可以使用cygpath实用程序。

$ echo $PWD
/cygdrive/c/Windows

$ cygpath -ua .
/cygdrive/c/Windows/

$ cygpath -wa .
C:\Windows

在不知道Subversion构建过程的细节的情况下,您是否可以通过将MSBuildProjectDirectory对象传递给它来设置LocalPath?