获取MSBuild中的发布目录

16

我有一个asp.net mvc应用程序,使用Visual Studio的Publish功能进行发布,并且我有一个自定义的MSBuild任务,需要该目录的路径,以便知道在哪里复制一些自定义构建文件...

我尝试了$(OutDir)、$(PublishDirectory)和许多其他选项... 我该如何获取这个路径?

4个回答

15

对我有效的是:

$(PublishUrl)

我得到了我所需要的:我的发布目录。

谢谢。


谢谢。我已经使用以下代码获取了完整路径:$(MSBuildProjectDirectory)\$(PublishUrl) - Guillermo Prandi

5
我能够结合 $(ProjectDir) 和 $(PublishDir) 来获取发布文件夹。然而,我正在发布 SharePoint 应用程序,但我认为它也适用于其他情况。
例如,调用一个程序:
<Exec Command="&quot;$(ProjectDir)\app.exe&quot; &quot;$(ProjectDir)$(PublishDir) &quot;"/>

2
当发布到本地文件夹时,$(PublishDir) 似乎会评估为临时位置。如果在构建过程中需要此值(例如用于FTP上传),则这可能很有用。如果有人需要知道,$(PublishURL) 将评估为实际目标文件夹。 - Guillermo Prandi

1
你应该能够使用PackageArchiveRootDir属性来解决这个问题。默认值为obj\Debug\Package。因此,如果您需要完整的路径,只需将MSBuildProjectDirectory与PackageArchiveRootDir组合起来,如下所示:$(MSBuildProjectDirectory)\$(PackageArchiveRootDir)

0
也许我来晚了,但当你搜索时,这篇帖子就会出现。 对我有效的是这里发布的内容。
<Target Name="MyCustomPrePublishTarget" AfterTargets="PrepareForPublish">
  <ItemGroup>
    <PublishDir Include="$(PublishDir)" />
  </ItemGroup>

  <Message Importance="High" Text="Absolute PublishDir is: %(PublishDir.FullPath)" />
</Target>

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接