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

Msbuild Web部署-使用相对路径进行本地文件系统部署,msbuild,msdeploy,webdeploy,Msbuild,Msdeploy,Webdeploy,我想使用Web Deploy运行自定义部署设置 由于我希望在许多不同的环境(团队成员本地机器、4个不同的构建服务器)上运行时能够很好地完成这项工作,因此我希望将其部署到相对的本地路径 我想做的是: 部署到本地相对路径 让构建后的步骤做一些神奇的事情 但是,当我将要部署到的本地文件路径输入为“…\deploy\u Production”时 web deploy抱怨如下: 2>Connecting to ..\Deploy_Live... 2>Unable to create the

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

由于我希望在许多不同的环境(团队成员本地机器、4个不同的构建服务器)上运行时能够很好地完成这项工作,因此我希望将其部署到相对的本地路径

我想做的是:

  • 部署到本地相对路径
  • 让构建后的步骤做一些神奇的事情
但是,当我将要部署到的本地文件路径输入为“…\deploy\u Production”时

web deploy抱怨如下:

2>Connecting to ..\Deploy_Live...
2>Unable to create the Web site '../Deploy_Live'.  The URL http://:0 is invalid.
就好像Web部署认为相对文件路径是网站URL一样。改用“.\”对我的事业没有帮助

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

编辑1:

我曾尝试在生成之前使用ConvertToAbsolutionPath任务,但没有成功:

  <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>

文件系统
http://mywebsite.com
..\部署生产
假的
编辑2:
上述方法有效,但仅当针对解决方案文件而不是项目文件运行命令行生成时,我们这里有一个bug,当使用文件系统发布时,您必须提供完整路径。实际上,我们在本周早些时候发现了这个bug。它将在我们的下一次更新中修复。在这种情况下,当传递相对路径时,它会错误地认为它是IIS路径

作为一种解决方法,您可以编辑.pubxml以使publishUrl成为完整路径。幸运的是,您可以使用MSBuild属性,这样就可以在团队场景中工作。下面是您应该做的,编辑.pubxml文件并将
publishUrl
的值更新为以下值

<publishUrl>$(MSBuildThisFileDirectory)..\..\..\Deploy_Production</publishUrl>
$(MSBuildThisFileDirectory)\\\\\\\\部署\u生产

此路径将相对于.pubxml文件本身。我已经通过命令行和发布对话框验证了这一点。如果您对此有任何问题,请告诉我,但修复程序有望在几个月后发布[当然没有保证]。

在尝试实施此方法时,我遇到了一些非常奇怪的行为。当我从命令行运行MSbuild时,它的工作方式与您描述的一样。当我从VS2012中的“发布Web”对话框运行它时,它似乎将MSBuildProjectDirectory解释为\Properties\PublishProfiles。有什么猜测吗?我刚刚更新了示例以使用$(MSBuildThisFileDirectory),它总是相对于.pubxml文件本身。请改用它。我想这就是修复此问题的更新?这将作为一个正确的VS2012更新发布吗?@SayedIbrahimHashimi我只是用$(MSBuildProjectDirectory)在VS 2012更新3上进行了尝试,这将解析为.pubxml文件的位置。注意不要从上面的注释中使用MSBuildThisProjectDirectory,答案中引用的MSBuildThisFileDirectory是设置为使用可能的重复项