【问题标题】:Should I install an SDK on the build server?我应该在构建服务器上安装 SDK 吗?
【发布时间】:2010-11-15 13:51:49
【问题描述】:

(这是一个 .net 构建服务器)

我收到以下错误:

c:\WINDOWS\Microsoft.NET\Framework\v2.0.50727\Microsoft.Common.targets(1679,9): error MSB3091: Task failed because "LC.exe" was not found, or the .NET Framework SDK v2.0 is not installed.  

The task is looking for "LC.exe" in the "bin" subdirectory beneath the location specified in the SDKInstallRootv2.0 value of the registry key HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\.NETFramework. 

 You may be able to solve the problem by doing one of the following: 

 1.) Install the .NET Framework SDK v2.0.  

2.) Manually set the above registry key to the correct location.  3.) Pass the correct location into the "ToolPath" parameter of the task.

这是因为我们使用的组件需要 LIC.exe 才能编译。

现在我可以通过在构建服务器上安装最新的 Microsoft SDK 来解决问题,但我认为构建服务器的全部意义是没有您的开发工具 安装就可以了。我想我可能可以解决这个问题,但不是在一些工作弄清楚一些事情之后(就像这些人所做的那样)

http://richardsbraindump.blogspot.com/2009/07/some-teambuild-fun-and-games.html

我应该安装 SDK 吗?更重要的是:

构建服务器的主要用途是什么?

【问题讨论】:

    标签: c# msbuild build-process build-automation cruisecontrol.net


    【解决方案1】:

    构建服务器的主要目的是构建代码。构建代码所需的任何东西都需要在构建服务器上。

    【讨论】:

      【解决方案2】:

      您的构建服务器必须拥有您所有的构建/开发工具/库。这就是构建的方式。

      是的,安装 SDK。

      【讨论】:

      • 是的,这似乎有些道理,但是您如何处理旧的“开发框没有错误,但部署框有错误”的问题?在我看来,在这种情况下,使用这种理念,您只是希望在您自己的机器之外的另一台机器上构建。
      • 如果你升级你的工具集并破坏你的一堆构建(我们有超过 20 个)会发生什么,花时间修复它是否合理?
      • 构建服务器的重点是保持构建环境不变。开发人员的 PC 经常更改并在其上具有不同的库版本。通过拥有构建 PC,您知道您的构建将始终针对正确的库和编译器。如果您想验证您的构建是否在非开发机器上正确运行,您需要在不同的机器上进行所有单元测试。
      【解决方案3】:

      最好的方法是将构建所需的所有内容存储在源代码管理中。这样做时,您不需要在更新构建链时遍历所有构建服务器,它会自动发生。另一个优势是您可以回到过去,仍然能够构建所有内容,而无需深入研究所有旧 CD 来查找构建旧版本产品所需的工具。

      但是,这可能不适用于所有构建工具。例如,我们尝试使用 Visual Studio 2005 执行此操作,但在从未安装的工具链构建时,我们从 mspdbsrv 收到奇怪的间歇性 pdb 错误。所以不幸的是,我们所有的构建服务器都安装了 VS2005(但没有安装 PS3 工具链,这真的非常好,因为它经常更新)。

      问候,

      塞巴斯蒂安

      【讨论】:

      • 你做PS3开发。凉爽的。你是怎么接触到的?编译器和库是公开可用的还是您必须与 Sony 签署协议?
      • 我同意。我确实认为您需要将构建所需的所有工具保留在源代码管理中。将工具保留在源代码中可为项目提供稳健性,以防止在将工具升级到新版本时出现混乱(并且借助源代码控制的“及时回溯”功能,它破坏过去构建的可能性要小得多!MS有时确实很难(例如它的范式与 LC.exe 需要 reg 条目),但是可以在构建脚本中处理,并且绝对值得花时间编写脚本而不是提出和维护单独的单元测试服务器
      • 并不是说有时不需要单独的测试服务器!但看起来在大多数情况下,保留最小的工具集(例如只是运行构建的软件)可以让事情变得简单并为您提供更多选择。
      • @Simon P Stevens:这些工具是非常专有的,但我为 Guerrilla Games 工作,我们是索尼的一部分,这很有帮助。 :)
      【解决方案4】:

      我会说构建服务器需要构建所需的一切;测试服务器可能没有安装任何 SDK。

      【讨论】:

      • 这也有一定的意义,但是,我们使用 ccnet,它与构建一起运行 NUnit 测试。 (如果测试通过,那么构建也通过了)你的意思是某种手动测试服务器吗?
      • 不同的地方叫它不同的名字——测试、验收。一个非常接近生产的环境,以确保系统(包括其安装)在没有任何支持工具或 SDK 的情况下工作。 NUnit 测试在这种环境下是不够的,但可能需要前端测试(例如 Canoo WebTest)
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-02-27
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多