【问题标题】:Cygwin 1.7.x fails to translate windows path to POSIX pathCygwin 1.7.x 无法将 windows 路径转换为 ​​POSIX 路径
【发布时间】:2012-02-16 14:59:20
【问题描述】:

大约一年后,我修改了我的一个项目,在安装程序文件名中包含颠覆修订。 我安装了 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" (重建 目标)——失败。

我尝试将 SvnInfo 任务的 LocalPath 参数修改为“.”或“/cygdrive/z/dev/myproject/src/winservice”,但是 SvnInfo 任务有一个讨厌的习惯,就是不管你放什么都使用 windows 完整路径所以“。”解析为之前使用的路径,“/cygdrive/z/dev/myproject/src/winservice”解析为“Z:/cygdrive/z/dev/myproject/src/winservice”,这又导致了错误。

是否有我可以在 Cygwin 1.7 中设置的设置来减少我的问题?

【问题讨论】:

    标签: cygwin msbuildcommunitytasks


    【解决方案1】:

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

    $ echo $PWD
    /cygdrive/c/Windows
    
    $ cygpath -ua .
    /cygdrive/c/Windows/
    
    $ cygpath -wa .
    C:\Windows
    

    在不了解 Subversion 构建过程的细节的情况下,是否可以通过传递 MSBuildProjectDirectory 对象来设置 LocalPath?

    【讨论】:

    • 问题是我不想将我的构建过程绑定到 Cygwin。目前,唯一将构建过程与 Cygwin 连接的是 bin 目录的位置(在 ToolPath 参数中设置)。所以,如果我下载了一些其他的 subversion 客户端并更改了那个目录,我就不必更改 ought 其他的了。但是,如果我使用 cygpath,我还要添加一件需要注意且肯定会被遗忘的事情。
    • 另外,调用 cygwin 也无济于事。如果我设置 LocalPath="/cygdrive/z/dev/myproject/src/winservice",Svninfo 社区任务,将自动在其前面附加驱动器号(在我的情况下为 Z:)。这当然会导致同样的错误。
    猜你喜欢
    • 1970-01-01
    • 2019-06-11
    • 1970-01-01
    • 2022-11-16
    • 2019-11-14
    • 2019-08-18
    • 1970-01-01
    • 1970-01-01
    • 2014-08-10
    相关资源
    最近更新 更多