0

大约一年后,我修改了我的一个项目,在安装程序文件名中包含颠覆修订。我安装了 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): error MSB6006 : "svnversion.exe" exited with code 1. Done Building Project

“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 中设置一个可以让我的问题变得稀缺的设置吗?

4

1 回答 1

0

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

$ echo $PWD
/cygdrive/c/Windows

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

$ cygpath -wa .
C:\Windows

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

于 2012-02-16T16:00:35.083 回答