【问题标题】:Run other than the DefaultTarget for a project configuration under Visual Studio 2010在 Visual Studio 2010 下运行除 DefaultTarget 之外的项目配置
【发布时间】:2012-01-25 09:25:16
【问题描述】:

我的 csproj 中有一个 MSBuild 目标,用于在构建后将我的 Web 应用程序的文件和文件夹复制到目标路径。

<Target Name="PublishToFileSystem" DependsOnTargets="PipelinePreDeployCopyAllFilesToOneFolder">
...

如果我通过命令行使用目标“PublishToFileSystem”调用 MSBuild,一切正常。

但现在我想“使用”这个目标也用于 Visual Studio 中的特殊配置(如发布、调试等)。

如何将配置分配给另一个目标,而不是使用 DefaultTargets 在项目中设置的 DefaultTarget“构建”:

<Project ToolsVersion="4.0" DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">

谢谢,康拉德

【问题讨论】:

    标签: visual-studio-2010 msbuild msbuild-task csproj msbuild-target


    【解决方案1】:

    尝试使用 AfterBuild 目标而不是 PublishToFileSystem:

    <Target Name="AfterBuild" DependsOnTargets="PipelinePreDeployCopyAllFilesToOneFolder">
    

    或查看Overriding Predefined Targets on MSDN

    【讨论】:

    • 在 AfterBuild-Target 中使用 DependsOnTargets,我在 AfterBuild 中得到循环依赖的错误。
    • PipelinePreDeployCopyAllFilesToOneFolder 目标依赖于 AfterBuild 目标?
    • 可能 PipelinePreDeployCopyAllFilesToOneFolder 中的某些子任务是再次调用 AfterBuild 的构建。
    【解决方案2】:

    以下方法可能适合您的需求:run a custom msbuild target from VisualStudio

    (这是本书MSBuild Trickery中的技巧#78)

    【讨论】:

    • Hmmm ...希望我可以定义像“ReleaseAndDeploy”这样的配置,我也可以将其用作 TFS-Build-Server 上的配置,而无需进行任何额外的修改。我的 VS-Tools 中的插件似乎不是一个明确的解决方案。我不能只为我的一个配置定义除 DefaultTarget 之外的另一个目标吗?
    • 当然,配置可以这样使用。只需将目标连接到 Build 中并使用 Condition="'$(Configuration)' == 'ReleaseAndDeploy'"。我从不使用这样的配置。我的偏好是从命令行和最近的许多 Powershell 驱动构建。对我来说,IDE 是一个不错的 UI,但对 SDLC 没有多大帮助,因为一切都与解决方案相关,而解决方案对于任何事情来说都是非常蹩脚的基础。
    【解决方案3】:

    如果您想为特定的解决方案配置执行此操作,并且像我一样遭受 ciruclar 依赖项的困扰,那么我能想到的最简单的方法就是编写您自己的 Target 以用作默认目标。该目标根据配置条件启动其他目标。

    <Target Name="CustomBuild">
      <CallTarget Targets="SignAndroidPackage" Condition="'$(Configuration)' == 'UITest'"/>
      <CallTarget Targets="Build" Condition="'$(Configuration)' != 'UITest'"/>
    </Target>
    

    然后只需将项目定义顶部的 Default 目标更改为该 CustomBuild 目标。

    <Project DefaultTargets="CustomBuild" ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-03-03
      • 2013-02-15
      相关资源
      最近更新 更多