Web 部署 - 使用相对路径进行本地文件系统部署
Posted
技术标签:
【中文标题】Web 部署 - 使用相对路径进行本地文件系统部署【英文标题】:Web Deploy - Using Relative Paths for local file system deployment 【发布时间】:2012-08-19 05:47:49 【问题描述】:我想使用 Web Deploy 来运行自定义部署设置。
由于我希望在许多不同的环境(团队成员本地计算机、4 个不同的构建服务器)上运行时都能正常工作,因此我想部署到相对的本地路径。
我想做的是:
部署到本地相对路径 让构建后的步骤做一些神奇的事情...但是,当我输入要部署到的本地文件路径时:“..\Deploy_Production”
网络部署抱怨这个:
2>Connecting to ..\Deploy_Live...
2>Unable to create the Web site '../Deploy_Live'. The URL http://:0 is invalid.
就好像Web deploy 认为相对文件路径是一个网站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: 上述方法有效,但仅在运行命令行时针对Solution文件而不是项目文件
构建【问题讨论】:
WebApplication publish to relative filesystem path 的可能重复项 【参考方案1】:这里有一个错误,使用文件系统发布时,您必须提供完整路径。我们实际上在本周早些时候发现了这个错误。它将在我们的下一次更新中修复。在这种情况下,当传递相对路径时,它会错误地认为它是 IIS 路径。
作为一种解决方法,您可以编辑 .pubxml 以使 publishUrl 成为完整路径。幸运的是,您可以使用 MSBuild 属性,以便在团队方案中工作。这是您应该做的,编辑您的 .pubxml 文件并将publishUrl
的值更新为以下内容。
<publishUrl>$(MSBuildThisFileDirectory)..\..\..\Deploy_Production</publishUrl>
此路径将相对于 .pubxml 文件本身。我已经验证这在命令行和发布对话框中都有效。如果您对此有任何问题,请告诉我,但修复程序有望在几个月内发布[当然不能保证 :)]。
【讨论】:
当我尝试实现这种方法时,我遇到了一些非常奇怪的行为。当我从命令行运行 MSbuild 时,这就像你描述的那样工作。当我从 VS2012 中的 Publish Web 对话框运行它时,它似乎将 MSBuildProjectDirectory 解释为以上是关于Web 部署 - 使用相对路径进行本地文件系统部署的主要内容,如果未能解决你的问题,请参考以下文章