MSBuild包任务 - Web部署

时间:2010-10-18 21:00:16

标签: msbuild itemgroup

我正在尝试将自定义文件添加到我们的网络部署包中,根据此博文: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上有一些其他引用我们需要复制到包中,但我从未在消息中看到任何找到的文件。有什么想法吗?

由于 安迪

2 个答案:

答案 0 :(得分:1)

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

显然,在调用这样的任务时:

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

MsBuild以此值c:\myfolder"结束。注意最后的双引号,而不是c:\myfolder\

修复方法是更改​​<property />并使用<arg />元素传递值。

所以,问题是NantContrib中的MsBuild任务。

希望这能节省一些时间。

答案 1 :(得分:0)

您缺少将该目标注入构建的PropertyGroup。你也应该包含它,我怀疑这个目标没有执行所以它们永远不会被添加。此外,您可能希望关注我的博客,因为有一种更简单的方法可以做到这一点,我会在有空的时候立即发布博客。