2

我的主要目标是使用cmd.

此外,我的问题似乎与该主题重复,甚至thisthis,事实并非如此。我的问题是我已经尝试过连接CopyAllFilesToSingleFolderForPackageDependsOnCopyAllFilesToSingleFolderForMsdeployDependsOn即使PipelineCollectFilesPhaseDependsOn没有运气。我<Message Text="Inside of CustomCollectFiles" Importance="high"/>在我的习惯Target中使用了Sayed Ibrahim Hashimi他的回答/v:diag切换中提出的msbuild.exe来验证这个事实。我不知道如何解决它:尝试将具有上述问题的不同修改的相应 XML 片段.csproj直接放入文件中,也放入.wpp.targets用于自定义打包的单独文件中。

我的开发环境包括 VS2010 和 VS2013,我已经通过 Web PI、Web 部署工具、Windows Azure SDK 安装了 Web Deployment 3.5。我的系统 PATH 环境变量包括c:\Windows\Microsoft.NET\Framework64\v4.0.30319\;c:\Program Files\IIS\Microsoft Web Deploy V3能够运行MSBuildMSDeploycmd. 当我查看 MSBuild 日志时,我看到:

CopyAllFilesToSingleFolderForMsdeployDependsOn = 
  ;
  ;

CopyAllFilesToSingleFolderForPackageDependsOn = 
  ;

  ;
;

有些东西在这里

PipelineDeployPhaseDependsOn = 
  ;
  Package;

所以我的问题是在哪里可以找到我的错误包装管道的来源?我错过了哪些其他类型的诊断?

4

1 回答 1

7

似乎 MSBuild 缓存的构建目标可能非常错误,但是在Windows 重新启动后,各种挂钩,包括来自这篇文章的挂钩,最终解决了我的问题,开始按预期工作。

此外,对于所有正在执行自动构建的人来说,可能会很有趣地注意到与网络部署相关的内容可以从主{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>
于 2013-12-25T09:36:35.893 回答