[英]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.