【问题标题】:how to integrate in msbuild in to solution如何将 msbuild 集成到解决方案中
【发布时间】:2012-11-20 23:53:00
【问题描述】:

我正在将 MSBuild xml 任务文件集成到 Visual Studio 2012 解决方案中。该文件执行 2 个任务,1 个针对 StyleCop 进行验证,另一个用于运行 FxCop 分析。我已经从网络上的教程中创建了 msbuild 文件。

我的问题是,文件应该存储在文件系统的什么位置?我认为它在解决方案之外。如何设置解决方案来运行此 msbuid 文件?我将 TFS 用于源代码控制,将 TFS Build 2010 用于 CI,因此我也希望将其集成到其中。

【问题讨论】:

    标签: msbuild visual-studio-2012 build-automation


    【解决方案1】:

    这是我在我工作的地方布置源代码控制树的方式:

    Root
     -- Artifacts  (Reports folder for build.  Items are not checked into TFS)
     -- BuildOutput (location where all compiled code is sent.  Items are not checked into TFS)
     -- BuildScripts
       -- ConfigFiles (config files used for different kinds of builds)
       -- MSBuild (MSBuild scripts that I have written for our build)
       -- MSBuild Extensions (MSBuild extension that I use as part of my build)
     -- Database (folder for all database related items)
     -- src (folder for all DotNET source code)
     -- ThirdParty (folder to hold all of our third party dependencies like NUnit, Specflow, etc)
    

    这对我们来说效果很好。

    通常,当您想要集成 styleCop 和 FXCop 等内容时,您会将它们作为步骤包含在您的整个构建过程中,而不是直接包含在项目或解决方案中。例如,我管理的构建过程有 12 个不同的步骤。我做的事情是 1) 编译代码,2) 运行单元测试和代码覆盖率,3) 运行集成测试,4) 运行重复查找器等。您可能希望在构建过程中设置相同类型的东西。

    我在 TFS 构建方面没有太多经验(我开始使用 JetBrains 的 TeamCity 而不是 TFS 构建),但您应该能够修改构建模板以将 MSBuild 脚本集成到构建过程中。我还认为 TFS Build 有一些扩展,允许您直接在构建模板中执行 StyleCop 和 FXCop。

    希望这会有所帮助。

    【讨论】:

    • 这是超级信息,真的对我有帮助。我不清楚的一件事是,从 Visual Studio 中构建解决方案时执行的构建脚本是否与从您的持续集成构建时执行的构建脚本相同?这一点我不清楚,什么是最佳做法。
    • 在 Visual Studio 中选择构建时(按 F6),不,这只会为每个项目文件执行构建指令。我所说的构建类型实际上是在服务器上执行的,而不是在本地运行的。如果您想执行您的构建配置的 TFS 构建但不想将您的更改提交到 TFS,您可以使用所谓的私有构建。这是一篇关于私有构建的非常好的文章。 sujitksingh.com/?p=64 简而言之,它允许您在服务器上运行构建,而无需将更改检查到您正在工作的分支中。
    • 再次感谢。我想包括诸如构建解决方案的开发人员的一部分的原因是,此时可以捕获任何构建错误,例如。 Stylecop 规则失败。根据您的信息,我认为这是不可能的。除非我将 msbuild 构建自动化作为 .net 项目的构建事件运行。这是正确的吗?
    • 是的,没错。我不建议直接修改 .net 项目文件,因为如果您决定更改构建过程,您最终会触及所有项目文件,而不是更改构建配置。您可以执行其他操作,例如设置执行 MSBuild 的批处理文件来编译您的解决方案,然后运行您的其他构建项。但是,这仍然必须在 VS 之外发生。
    • 您在谈论的是为什么微软包含私有构建功能。它允许开发人员在签入代码之前针对服务器上的构建测试他们的更改。这样,他们可以在其他开发人员可以访问的地方提交他们的更改之前进行他们需要的任何更改,以纠正诸如 Stylecop 规则失败之类的事情。
    猜你喜欢
    • 2018-10-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-07-25
    • 2019-07-06
    • 2015-07-18
    • 2019-05-29
    相关资源
    最近更新 更多