【问题标题】:Streamline .NET projects with Msbuild使用 Msbuild 简化 .NET 项目
【发布时间】:2009-09-25 15:25:53
【问题描述】:

抱歉有点含糊不清,但我现在领导的项目也是如此。我继承了大量各种内部工具,并试图围绕每个工具建立统一的构建系统。我们拥有的一些项目(几十个)主要是基于 .NET 的 Web 项目 C#,其中一些是 Web-服务和一些网络应用程序。这些应用程序是在过去 6 年中构建的,因此 .NET 版本从 2 到 3.5 不等。最糟糕的部分 - 所有应用程序都是使用 VS 构建的,没有一个具有命令行构建。

要求是:我应该能够从 SVN 签出代码并完全从命令行构建任何或所有项目,无需输入提示,因此最终可以集成到 TeamCity(持续集成工具)

我有 C/C++、Java 背景,所以我做了一些研究,一切似乎都指向 MSBuild 作为工具。在过去的 2 周里,我从我们的 .NET 开发人员那里听到的所有消息:“这很难,不可能,我们不知道该怎么做”所以现在问题来了:

  1. 是否可以仅使用命令行构建来改造任何现有的 .Net 项目?如果有限制,那会是什么?
  2. 我是否需要完整版本的 VS 来执行构建和部署,或者是否有一些较小的替代方案(同样,最终项目将在没有 GUI 的持续集成盒上构建)
  3. 我可以将代码(来自 SVN)检出到任何目录吗?目前我被告知我需要将代码放入配置为由 VS“监控”的“特殊位置”
  4. 如何管理外部依赖?目前,我从团队那里听说,任何 3rd 方库都需要在使用 UI 构建之前“预安装”,团队为我提供的最佳解决方案是“安装和创建 VM”

您的建议将不胜感激

【问题讨论】:

    标签: .net msbuild build-process


    【解决方案1】:

    这完全取决于您的依赖项和事物,但是:

    • MSBuild 是 Visual Studio 2005 及更高版本用作其“本机”文件格式的内容 - 因此您可以轻松构建 VS 解决方案 VS 项目
    • MSBuild 与各种编译器一起是 .NET 框架的一部分。您不需要安装 VS。
    • 是的,您可以在任何地方从 SVN 签出代码。它不像 VSS/VSTS,服务器“知道”代码在哪里
    • 外部依赖项应该——只要有可能——只是存储在源代码管理中并通过相对路径引用的 DLL。如果您要在 GAC 中安装一些东西,那会稍微困难一些。

    就我个人而言,我已经成功使用NAnt 作为构建“控制器”,但随后向 MSBuild 进行了实际编译。对于控制器位,它比 MSBuild 更好 (IMO),但在实际编译方面不如 Visual Studio 好。

    您可以在我的Protocol Buffers port 中查看其工作原理的示例。

    【讨论】:

    • 我正在使用 Maven (exec-maven-plugin) 通过各种开关调用 MSBuild。我还可以使用 Maven 来获取 DLL 并将它们放在项目的文件夹下(比如 proj/lib)。我如何“激活”这些?是否有一些 MSBuild 命令可以提供帮助?
    • 顺便说一句,如果 MSBuild 使用 VS 解决方案文件,我是否仍然可以检查解决方案并仅使用 .NET 框架构建它而不实际安装 VS?
    • 只要从 VS 项目中适当地引用它们,就不需要“激活”这些库。是的,你仍然可以在不安装 VS 的情况下构建。
    • 乔恩,你能定义“适当引用”吗?我将源代码拉到某个目录中,而我唯一可以预定义的是相对路径——这就足够了吗?如果没有 - 我可以在运行时使用 MSBuild 注册 DLL 吗?
    • "是的,你仍然可以在不安装 VS 的情况下进行构建" ...只要你不想构建安装项目(生成 MSI)——这需要 VS :(跨度>
    猜你喜欢
    • 2010-10-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-09-28
    • 1970-01-01
    • 2017-09-24
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多