WebApplication发布到相关的文件系统path

我设置发布到相对path进行本地testing(尤其是xmlconfiguration转换)。 每个开发人员都有自己的path到检出项目,我想设置一个发布是机器/环境不可知论者。

发布对话框不提示任何允许的variables或通配符,它​​不接受obj\publishfile://./obj/publish

有没有办法发布到相对的文件系统path?

6 Solutions collect form web for “WebApplication发布到相关的文件系统path”

编辑

对于Visual Studio 2012,此解决scheme将无法工作。 在这之后你应该看看michielvoo的答案。

原始答案

尝试和尝试后,我发现解决scheme:您可以通过设置使用相对path

 file:///./obj/publish 

在“ Publish WebApp对话框中,但是您必须使用您正在使用的用户已经存在和可写的path。 这样,您可以将您的Web应用程序发布到本地文件夹或path相关的文件夹中。

让我知道这是否有帮助。 它为我做了。

对于那些使用Visual Studio 2012和新的发布configuration文件( Properties/PublishProfiles/Local.pubxml ),你可以在文件中使用这个语法:

 <Project ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003"> <PropertyGroup> <WebPublishMethod>FileSystem</WebPublishMethod> <SiteUrlToLaunchAfterPublish /> <publishUrl>$(MSBuildThisFileDirectory)..\..\obj\publish</publishUrl> <DeleteExistingFiles>True</DeleteExistingFiles> </PropertyGroup> </Project> 

请注意,$(MSBuildThisFileDirectory)属性将parsing为Local.pubxml目录。 从那里你应该遍历到你需要的地方。

这在Visual Studio 2013中适用于我:

 file:\\..\..\..\Publish 

请注意,这不会发布到obj \发布,作为原始的海报想要的,但我的系统上的另一个目录(几个文件夹),如我所愿。 如果你愿意的话,修改它为obj \发布。

在Visual Studio 2012中,正则path是正斜杠:

 ../../../../../app 

这从发布的项目的根目录开始。

VS 2015接受类似的东西

 ..\..\..\DeployFiles 

它也会创build文件夹,如果它丢失,所以你的发布设置可以进入源代码pipe理,但你可以很容易地忽略DeployFiles文件夹及其内容。

对于额外的发布后步骤需要使用相对path调用msdeploy(MSVS 2015,dnx)的情况,另一种方法是编辑项目文件(不是pubxml,尽pipe可能也适用),并创build一个variables进入绝对path的相对path。

 <Target Name="AfterWebPublish" AfterTargets="WebPublish"> <!-- msdeploy cannot currently handle relative paths for contentPath so first convert it to an absolute path --> <PropertyGroup> <AbsOutDir>$([System.IO.Path]::GetFullPath("$(ProjectDir)$(OutDir)"))</AbsOutDir> </PropertyGroup> <Exec WorkingDirectory="$(ProjectDir)" Command='call "$(DevEnvDir)..\Tools\vsvars32.bat"' /> <Exec WorkingDirectory="$(ProjectDir)" Command='"C:\Program Files (x86)\IIS\Microsoft Web Deploy V3\msdeploy" -verb:sync -source:contentPath="$(AbsOutDir)PublishOutput" -dest:package="$(AbsOutDir)$(MSBuildProjectName).zip"' /> </Target> 

然后$(AbsOutDir)可以根据需要在其他地方使用(例如用于msdeploy contentPath)。 我不认为它可以在对话框中input。

从“ 怎样才能得到-msbuild-to-evaluate-and-print-the-full-path-when-given-a-relative ”。