C# 我应该在构建服务器上安装SDK吗?

C# 我应该在构建服务器上安装SDK吗?,c#,msbuild,build-process,build-automation,cruisecontrol.net,C#,Msbuild,Build Process,Build Automation,Cruisecontrol.net,(这是一个.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" i

(这是一个.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来解决这个问题,但我认为构建服务器的关键是不安装开发工具。我想我可能可以解决这个问题,但在解决一些问题之后就不行了(就像这些家伙那样)

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


生成服务器的主要用途是什么?

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

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

您的生成服务器必须安装所有的生成/开发工具/库。这就是它构建的方式


因此,是的,安装SDK。

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

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

问候,


Sebastiaan

这也有一定的意义,但是,我们使用ccnet,它在构建过程中运行NUnit测试。(如果测试通过,那么构建也会通过)你是指某种手动测试服务器吗?不同的地方称它为不同的名称-测试,验收。非常接近生产环境,以确保系统(包括其安装)在没有任何支持工具或SDK的情况下工作。NUnit测试在这种环境下是不够的,但是前端测试可能(例如Canoo WebTest)是的,这似乎是有道理的,但是您如何处理旧的“开发盒上没有错误,但部署盒上有错误”问题?在我看来,在这种情况下,使用这种理念,你只是想在自己的机器之外的另一台机器上构建。如果你升级了你的工具集,并破坏了一堆构建(我们有超过20个构建),又会发生什么呢,花在修复上的时间合理吗?构建服务器的关键是保持构建环境不变。开发人员的PC机经常会发生变化,并且有不同的库版本。通过拥有一台构建PC,您知道您的构建将始终与正确的库和编译器相冲突。如果您想验证您的构建是否在非开发机器上正确运行,您需要在不同的机器上进行所有的单元测试。酷。你是怎么进去的?编译器和库是公开的吗?还是你必须和索尼签署协议?我同意。我确实认为您需要保留内置源代码管理所需的所有工具。将工具保存在源代码中可以为项目提供一种健壮性,在将工具升级到新版本时可以防止混乱(并且源代码管理的“返回时间”功能大大降低了破坏过去构建的可能性!MS有时会让它变得困难(例如它的范例LC.exe需要reg条目),但是,这可以在构建脚本中解决,而且绝对值得花时间编写脚本,而不是创建和维护一个单独的单元测试服务器。不要说有时不需要单独的测试服务器!但在大多数情况下,保留一个最小的工具集显然是非常必要的(就像运行构建的软件一样)让事情变得简单,给你更多的选择。@Simon P Stevens:这些工具是非常专有的,但我为游击队游戏工作,我们是索尼的一部分,这很有帮助。:)