Web部署 - 使用相对路径进行本地文件系统部署

时间:2012-08-19 05:47:50

标签: msbuild msdeploy webdeploy

我想使用Web Deploy来运行自定义部署设置。

由于我希望在许多不同的环境(团队成员本地计算机,4个不同的构建服务器)上运行时能够正常工作,我想部署到相对的本地路径。

我想要做的是:

  • 部署到本地相对路径
  • 让构建后的步骤做出神奇的事情......

但是,当我输入要部署的本地文件路径为:“.. \ Deploy_Production”

Web部署抱怨:

2>Connecting to ..\Deploy_Live...
2>Unable to create the Web site '../Deploy_Live'.  The URL http://:0 is invalid.

就像Web部署认为相对文件路径是网站URL一样。使用“.. \”代替我的原因。

如何让WebDeploy部署到本地相对路径?

修改1:

我在构建之前尝试使用ConvertToAbsolutePath任务,但无济于事:

  <PropertyGroup>
    <WebPublishMethod>FileSystem</WebPublishMethod>
    <SiteUrlToLaunchAfterPublish>http://mywebsite.com</SiteUrlToLaunchAfterPublish>
    <publishUrl>..\Deploy_Production</publishUrl>
    <DeleteExistingFiles>False</DeleteExistingFiles>
  </PropertyGroup>

  <Target Name="BeforeBuild">
    <ConvertToAbsolutePath Paths="$(publishUrl)">
      <Output TaskParameter="AbsolutePaths" PropertyName="publishUrl" />
    </ConvertToAbsolutePath>
  </Target>

编辑2: 以上工作,但运行命令行构建时,解决方案文件而不是项目文件

1 个答案:

答案 0 :(得分:41)

我们在这里有一个错误,当使用文件系统发布时,您必须提供完整路径。我们本周早些时候发现了这个bug。它将在我们的下一次更新中修复。在这种情况下,当相对路径通过时,它错误地认为它是IIS路径。

作为一种解决方法,您可以编辑.pubxml以使publishUrl成为完整路径。幸运的是,您可以使用MSBuild属性,以便在团队方案中使用它。您应该执行以下操作,编辑.pubxml文件并将publishUrl的值更新为以下内容。

<publishUrl>$(MSBuildThisFileDirectory)..\..\..\Deploy_Production</publishUrl>

此路径将相对于.pubxml文件本身。我已经验证了这在命令行和发布对话框中都有效。如果您对此有任何疑问,请告诉我,但修复程序应该会在几个月内发布[当然不能保证:)]。