gpt4 book ai didi

visual-studio - VS 2010 : Need project to just act as trigger for MSBUILD script and to not compile to assembly

转载 作者:行者123 更新时间:2023-12-04 06:00:32 25 4
gpt4 key购买 nike

我有一个包含多个 Web 应用程序项目的解决方案。构建完所有项目后,我需要运行一个 MSBUILD 脚本。

我以前做的是从现有项目之一调用脚本(通过.csproj 文件中的<Target Name="AfterBuild">)。但是,我必须确保我使用了最后构建的项目,如果构建顺序发生变化,我会得到意想不到的结果。

因此,我决定创建一个空的 Web 应用程序项目,并设置项目依赖项,使其始终最后构建,然后将 MSBUILD 脚本附加到此项目。

所以现在它总是在正确的时间运行,但是由于正在构建所谓的空项目,我得到了一个额外的(微小的)程序集。项目中没有代码文件(AssemblyInfo.cs 除外),但始终会生成一个程序集。

那么,有没有办法阻止正在构建的程序集,或者有没有办法将 MSBUILD 脚本作为一个整体附加到解决方案中并完全避免这个虚拟项目?

最佳答案

MSBuild 4.0 有两个新的钩子(Hook)可用于运行脚本 构建解决方案之前和之后 .在解决方案文件上运行 MSBuild 时,它将在解决方案目录中查找两个目标文件:

  • 之前 .SolutionName.sln.targets
  • 之后 .SolutionName.sln.targets

  • 如果找到这些文件中的任何一个,它将在适当的阶段自动执行。

    在您的情况下,为了在构建解决方案中的所有项目后运行脚本,您可以创建一个 after.MySolution.sln.targets带有 Target 的文件像:
    <Target Name="RunPostBuildScripts" AfterTargets="Build">
    <MSBuild Projects="PostBuild.targets" />
    </Target>

    另见:
  • Extending the solution build
  • 关于visual-studio - VS 2010 : Need project to just act as trigger for MSBUILD script and to not compile to assembly,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8431884/

    25 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com