WebApplication发布到相关的文件系统path
我设置发布到相对path进行本地testing(尤其是xmlconfiguration转换)。 每个开发人员都有自己的path到检出项目,我想设置一个发布是机器/环境不可知论者。
发布对话框不提示任何允许的variables或通配符,它不接受obj\publish
或file://./obj/publish
有没有办法发布到相对的文件系统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 ”。