【问题标题】:NAnt Builds Failing on Windows Server 2008 after installing ASP.NET 2.0 SDK安装 ASP.NET 2.0 SDK 后,Windows Server 2008 上的 NAnt 构建失败
【发布时间】:2009-03-11 16:05:30
【问题描述】:

我正在使用 TeamCity 管理我的一个项目,但它似乎无法在 Windows Server 2008 上与 Nant 一起正常工作。我可以做些什么来解决这个问题?

在安装 ASP.NET 2.0 Framework SDK 之前:

[10:21:07]: BUILD FAILED
[10:21:07]: Failed to initialize the 'Microsoft .NET Framework 2.0' (net-2.0) target framework.
[10:21:07]:     Property evaluation failed.
[10:21:07]: Expression: ${path::combine(sdkInstallRoot, 'bin')}
[10:21:07]:                             ^^^^^^^^^^^^^^
[10:21:07]:         Property 'sdkInstallRoot' has not been set.

之后:

[11:48:16]: Target framework: Microsoft .NET Framework 2.0
[11:48:16]: Target(s) specified: test 
[11:48:16]:  [property] Target framework changed to "Microsoft .NET Framework 3.5".
[11:48:16]: BUILD FAILED
[11:48:16]: INTERNAL ERROR
[11:48:16]: System.NullReferenceException: Object reference not set to an instance of an object.
[11:48:16]:    at NAnt.Core.FrameworkInfo.get_Version()
[11:48:16]:    at NAnt.Core.Project.UpdateTargetFrameworkProperties()
[11:48:16]:    at NAnt.Core.Tasks.PropertyTask.ExecuteTask()
[11:48:16]:    at NAnt.Core.Task.Execute()
[11:48:16]:    at NAnt.Core.Project.InitializeProjectDocument(XmlDocument doc)
[11:48:16]:    at NAnt.Core.Project.Execute()
[11:48:16]:    at NAnt.Core.Project.Run()
[11:48:16]: Please send bug report to nant-developers@lists.sourceforge.net.
[11:48:16]: Total time: 0.1 seconds.
[11:48:16]: Process exited with code 1
[11:48:16]: Build finished

【问题讨论】:

  • 我们可以看看 NAnt 脚本吗?

标签: .net nant teamcity


【解决方案1】:
  1. 在“框架”部分需要 .net 3.5 条目。

  2. 保证小节中3.5版本的Sdkinstallroot如下,是这个问题的根本原因-
    <readregistry property="sdkInstallRoot" key="SOFTWARE\Microsoft\Microsoft SDKs\Windows\v7.0A\WinSDK-NetFx40Tools\InstallationFolder" hive="LocalMachine" failonerror="false" />

希望这会有所帮助!

【讨论】:

    【解决方案2】:

    有几件事可能会导致这种情况。

    1. 您没有安装完整的 .Net 2.0 SDK。
    2. 您缺少一些注册表项。如果您查看 Windows xp / vista 机器的注册表并搜索 sdkInstallRoot,您可能会找到它。然后将代码复制到您的服务器。

    但是要验证您是否安装了 .net 框架 sdks @ 至少只需转到 C:\windows\Microsoft.net 文件夹并转到您需要的版本并在其中搜索以尝试找到 csc.exe 或vbc.exe 程序。如果找不到它们,则说明您没有安装 SDK,但很可能安装了运行时。

    试一试,看看是否有帮助。

    【讨论】:

      【解决方案3】:

      在 Windows Server 2003 64 位服务器上使用 Nant 时,我不得不下载每晚构建的版本,因为 Nant 0.86 beta 1 存在 64 位问题。我确实让它工作了,但我不确定它是否能与 Windows Server 2008 一起工作。Nant 一直处于测试阶段。如果您坚持使用 Nant,请尝试夜间构建,否则我建议为 .Net 2+ 和 64 位机器使用 MSBuild。

      欲了解更多信息,请查看这篇文章MsBuild vs. Nant

      【讨论】:

        【解决方案4】:

        我在使用 NAnt 时遇到过类似的问题。我知道这不是最佳 解决方案,但如果您需要让您的项目动起来,它是一种有效的解决方案。

        我发现在服务器上安装开发环境(C# Express 不适合我,但 VS 2008 可以)可以解决这个问题。 (是的,我意识到这违背了正常的最佳实践,但它可以工作并让我的脚本运行,这样我就可以重新开始编码。)

        只是想我会分享以防其他人处于类似情况..(这对我来说对 CruiseControl.Net 和 Hudson 都有效)。

        【讨论】:

        • 我回到了这个。更好的解决方案是简单地安装 2.0 SDK。即使已经安装了更高版本(我有 3.5 SDK),这似乎也是必需的。
        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2015-10-06
        • 2010-12-26
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多