[英]Can not hook into CopyAllFilesToSingleFolderForMsdeployDependsOn during MSBuild on my Web Application project
我的主要目標是使用cmd
將縮小的JS腳本添加到ASP.NET Web應用程序的部署包中。
此外,我的問題似乎要重復這個話題 ,甚至這個和這個 ,它不是這樣的。 我的問題是我嘗試鈎住CopyAllFilesToSingleFolderForPackageDependsOn
, CopyAllFilesToSingleFolderForMsdeployDependsOn
甚至PipelineCollectFilesPhaseDependsOn
沒有運氣。 我在自定義Target
使用了<Message Text="Inside of CustomCollectFiles" Importance="high"/>
如Sayed Ibrahim Hashimi 在他的答案和msbuild.exe
/v:diag
開關中所msbuild.exe
以驗證這一事實。 我不知道如何解決該問題:嘗試將經過上述修改后的相應XML代碼片段直接放入.csproj
文件中,也放入單獨的.wpp.targets
文件.wpp.targets
,該文件用於自定義打包。
我的開發環境包括VS2010和VS2013,我已經通過Web PI,Web部署工具,Windows Azure SDK安裝了Web Deployment 3.5。 我的系統PATH環境var包括c:\\Windows\\Microsoft.NET\\Framework64\\v4.0.30319\\;c:\\Program Files\\IIS\\Microsoft Web Deploy V3
,以便能夠從cmd
運行MSBuild
和MSDeploy
。 當我查看MSBuild日志時,我看到以下內容:
CopyAllFilesToSingleFolderForMsdeployDependsOn =
;
;
CopyAllFilesToSingleFolderForPackageDependsOn =
;
;
;
一些東西在這里
PipelineDeployPhaseDependsOn =
;
Package;
所以我的問題是從哪里找到包裝管道運行不正常的根源? 我錯過了什么其他診斷方法?
似乎MSBuild緩存的構建目標非常錯誤,但是Windows重新啟動后,各種鈎子(包括這篇文章中的鈎子) 終於解決了我的問題,開始按預期工作。
另外,對於所有正在執行自動構建工作的人員,可能會注意到與Web部署相關的工作可以從主{Project Name}.csproj
文件移動到相應的{Project Name}.wpp.targets
文件中,我認為這是有趣的。一種配置構建選項的更優雅的方法,尤其是當您不想將它們包含在TFS中或不想針對不同的發布目標自定義構建行為時。
因此,這是我現在可以使用的最終.wpp.targets
文件:
<?xml version="1.0" encoding="utf-8"?>
<Project ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<PropertyGroup>
<IgnoreDeployManagedRuntimeVersion>True</IgnoreDeployManagedRuntimeVersion>
<ExcludeFilesFromDeployment>Web.config</ExcludeFilesFromDeployment>
<SkipExtraFilesOnServer>True</SkipExtraFilesOnServer>
<AllowUntrustedCertificate>True</AllowUntrustedCertificate>
</PropertyGroup>
<Target Name="BeforeBuild">
<Message Text="Building our Web Deploy package using Tools path $(VSToolsPath)" Importance="high"/>
</Target>
<!-- More verbose way of doing the same as with BeforeTargets -->
<!-- <PropertyGroup>-->
<!-- <CopyAllFilesToSingleFolderForPackageDependsOn>-->
<!-- CollectJsMinFiles;-->
<!-- $(CopyAllFilesToSingleFolderForPackageDependsOn);-->
<!-- </CopyAllFilesToSingleFolderForPackageDependsOn>-->
<!-- <CopyAllFilesToSingleFolderForMsdeployDependsOn>-->
<!-- CollectJsMinFiles;-->
<!-- $(CopyAllFilesToSingleFolderForMsdeployDependsOn);-->
<!-- </CopyAllFilesToSingleFolderForMsdeployDependsOn>-->
<!-- </PropertyGroup>-->
<!-- <Target Name="CollectJsMinFiles"> -->
<Target Name="CollectJsMinFiles" BeforeTargets="CopyAllFilesToSingleFolderForPackage;CopyAllFilesToSingleFolderForMsdeploy">
<Message Text="Collecting min JS files in CollectJsMinFiles" Importance="high"/>
<ItemGroup>
<JsMinFiles Include="**\*.min.js" />
<FilesForPackagingFromProject Include="%(JsMinFiles.Identity)">
<DestinationRelativePath>%(RecursiveDir)%(Filename)%(Extension)</DestinationRelativePath>
</FilesForPackagingFromProject>
</ItemGroup>
</Target>
</Project>
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.