2010-10-18 104 views
0

我想自定义文件添加到Web部署包,每本博客文章:http://sedodream.com/2010/05/01/WebDeploymentToolMSDeployBuildPackageIncludingExtraFilesOrExcludingSpecificFiles.aspx的MSBuild包任务 - Web部署

<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一些其他的参考,我们需要复制到包,但我从来没有看到消息中找到输出的任何文件。有任何想法吗?

感谢 安迪

回答

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任务。

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

0

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

+0

说了,谢谢,但目标确实得到执行,因为我看到消息AppBuildFolder = c:\ myfolder'和'Files found:'(但没有显示)。我现在可以做些什么来实现这项工作,以便我能够在截止日期前完成工作?我怀疑我的问题没有使'_CustomFiles'中的Include包含正确的格式,否则这是从您的博客复制并粘贴的。 :-) – Andy 2010-10-19 12:40:35

+0

如果消息是'找到文件',那么您还没有正确创建Include声明。你需要让那部分工作,否则它不会工作,因为你不会向FilesForPackagingFromProject项目列表添加任何东西。 – 2010-10-19 15:46:54