2010-10-18 113 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