【问题标题】:MSBuild Package task - Web DeployMSBuild 包任务 - Web 部署
【发布时间】:2010-10-18 21:00:16
【问题描述】:

我正在尝试将自定义文件添加到我们的 Web 部署包中,根据这篇博文:http://sedodream.com/2010/05/01/WebDeploymentToolMSDeployBuildPackageIncludingExtraFilesOrExcludingSpecificFiles.aspx

  <Target Name="CustomCollectFiles">
    <Message Text="AppBuildFolder = $(AppBuildFolder)"/>
    <ItemGroup>
      <_CustomFiles Include="..\*Repository*\**\*.dll;..\*Repository*\**\*.pdb" Condition="'$(AppBuildFolder)' == ''" />
      <_CustomFiles Include="$(AppBuildFolder + '*.dll');$(AppBuildFolder + '*.pdb')" Condition="'$(AppBuildFolder)' != ''" />
      <FilesForPackagingFromProject Include="%(_CustomFiles.Identity)">
        <DestinationRelativePath>bin\%(Filename)%(Extension)</DestinationRelativePath>
      </FilesForPackagingFromProject>
    </ItemGroup>
    <Message Text="Files found: @(_CustomFiles)"/>
  </Target>

我们有一些位于 AppBuildFolder 的其他引用,我们需要将它们复制到包中,但我从未在消息中看到任何找到的文件输出。有什么想法吗?

谢谢 安迪

【问题讨论】:

    标签: msbuild itemgroup


    【解决方案1】:

    好的,问题是这样的。我们正在使用 Nant 的 MsBuild 任务来构建 Web Deploy 项目。

    显然,当这样调用任务时:

    <msbuild>
      <property name="AppBuildFolder" value="${Some.Path.Ending.In.Backslash}" />
    </msbuild>
    

    MsBuild 最终得到这个值c:\myfolder"。注意末尾的双引号,而不是c:\myfolder\

    解决方法是更改​​ &lt;property /&gt; 并使用 &lt;arg /&gt; 元素传递值。

    所以,问题出在 NantContrib 中的 MsBuild 任务上。

    希望这可以节省其他人一些时间。

    【讨论】:

      【解决方案2】:

      您缺少将该目标注入构建的 PropertyGroup。你也应该包括它,我怀疑这个目标没有执行,所以它们永远不会被添加。另外,您可能想关注我的博客,因为有一种更简单的方法可以做到这一点,我有时间会尽快写博客。

      【讨论】:

      • 说,谢谢,但是当我看到消息 AppBuildFolder = c:\myfolderFiles found: 时,目标确实被执行(但没有显示)。我现在能做些什么来让它工作,这样我就可以赶上我们的最后期限了吗?我怀疑我的问题是_CustomFiles 中的Include 的格式不正确,否则这是您博客的复制和粘贴。 :-)
      • 如果消息是“找到的文件:”,那么您没有正确创建包含声明。您需要使该部分正常工作,否则它将无法正常工作,因为您不会将任何内容添加到 FilesForPackagingFromProject 项目列表中。
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-05-31
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-03-10
      相关资源
      最近更新 更多