我正在设置发布到本地测试的相对路径(尤其是xml配置转换)。每个开发人员都有自己的签出项目路径,我想设置一个与机器/环境无关的发布。
发布对话框不会提示其中允许的任何变量或通配符,也不接受obj\publish
或file://./obj/publish
有没有办法发布到相关文件系统路径?
答案 0 :(得分:50)
对于使用Visual Studio 2012和新发布配置文件(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)属性将解析为Local.pubxml目录。从那里你应该遍历到达你需要的地方。
答案 1 :(得分:17)
对于Visual Studio 2012,此解决方案无效。你应该在这之后看看michielvoo的答案。
尝试并尝试后,我找到了解决方案:您可以通过设置
来使用相对路径file:///./obj/publish
在Publish WebApp
对话框中,但您必须使用您正在使用的用户已存在且可写的路径。这样,您可以将Web应用程序发布到本地文件夹或路径相关文件夹中。
如果这有帮助,请告诉我。它确实适合我。
答案 2 :(得分:5)
这在Visual Studio 2013中对我有用:
file:\\..\..\..\Publish
请注意,这不会像原始海报那样发布到obj \ publish,而是发布到我想要的系统上的另一个目录(几个文件夹)。如果您愿意,可以将其修改为obj \ _发布。
答案 3 :(得分:4)
VS 2015接受类似
的内容..\..\..\DeployFiles
如果文件夹丢失,它也会创建该文件夹,因此您的发布设置可以进入源代码管理,但您可以轻松忽略DeployFiles文件夹及其内容。
答案 4 :(得分:3)
只是带有正斜杠的常规路径在Visual Studio 2012中起作用:
../../../../../app
这从已发布项目的根目录开始。
答案 5 :(得分:0)
对于需要使用相对路径调用msdeploy(MSVS 2015,dnx)的其他发布后步骤的情况,另一种方法是编辑项目文件(不是pubxml,尽管这可能也有效)并创建一个变量将相对路径转换为绝对路径。
<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)。我不认为它可以在对话框中输入。
来自“how-can-i-get-msbuild-to-evaluate-and-print-the-full-path-when-given-a-relative”。