【问题标题】:Why is Nant not working with TeamCity?为什么 Nant 不与 TeamCity 合作?
【发布时间】:2008-10-27 18:56:52
【问题描述】:

我已经设置好构建我的 ASP.NET MVC 项目,它在本地运行良好。我将 nant 添加到工具文件夹并将其添加到版本控制中。 TeamCity 获取我的更改并开始构建,但它失败了。

我相信我使用的是最新版本的 Nant,并且我已将 .net framework 3.5 添加到 nant.exe.config。我在服务器上缺少什么,是的,.net 框架安装在服务器上,因为如果我手动构建和部署,asp.net mvc 应用程序确实可以工作?

构建文件如下:

<target name="compile" description="Compiles using the AutomatedDebug Configuration">
    <msbuild project="Tolt.Sims.sln" />
</target>

这是错误:

BUILD FAILED 无法初始化“Microsoft .NET Framework 2.0”(net-2.0)目标框架。 属性评估失败。表达式:${path::combine(sdkInstallRoot, 'bin')} ^^^^^^^^^^^^^^ 属性 'sdkInstallRoot' 尚未设置。 有关构建失败原因的更多信息,请在调试模式下再次运行构建。尝试“nant -help”以获取更多信息

【问题讨论】:

    标签: asp.net-mvc nant teamcity


    【解决方案1】:

    如果您使用的是 NAnt 的 beta 版本(这是目前获得支持以高于 2.0 框架为目标的唯一方法),您可能会遇到注册表问题。类似的问题是reported by Tim Barcz

    事情几乎可以归结为指向 2.0 版本的 msbuild 的 NAntContrib(msbuild 任务的提供者)。查看他的解决方案,看看它是否适用于您的场景。

    【讨论】:

    • 这是否意味着我必须在构建服务器上安装 SDK?
    • 我不完全确定你在问什么,但如果你的构建服务器是执行这个 nant 进程的地方,那么你需要在那里安装 .NET 3.5 SDK。
    【解决方案2】:

    您可能没有安装 .NET Framework 2.0 SDK。

    您可以从以下位置安装它 http://www.microsoft.com/downloads/details.aspx?familyid=fe6f2099-b7b4-4f47-a244-c96d69c35dec&displaylang=en

    【讨论】:

    • 这也是我遇到的问题。未安装 .Net 2.0 SDK 会导致未设置 sdkInstallRoot 属性。
    【解决方案3】:

    我通过在注册表中添加以下内容来解决此问题:

    新字符串值位于:HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft.NETFramework

    名称:sdkInstallRootv2.0

    使用值:C:\Program Files\Microsoft Visual Studio 8\SDK\v2.0\

    好像活了过来……

    w://

    【讨论】:

    • 谢谢,为我做了(但应该是 HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\.NETFramework)。
    【解决方案4】:

    此问题在 0.86 beta1 版本后得到修复。 2010 年 4 月 1 日,发布了 0.90,其中包含修复程序,以防您可以选择升级 nant。为了提供更多详细信息,0.90 中的修复版本似乎是对 nant.exe.config 文件的简单更改。添加了下面的粗体文本,无需安装 2.0 SDK 即可解决问题。

    &lt;directory name="${path::combine(sdkInstallRoot, 'bin')}" if="${property::exists('sdkInstallRoot')}" />

    更新 net-2.0 部分以修复它。

    【讨论】:

      【解决方案5】:

      【讨论】:

        【解决方案6】:

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

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

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

        【讨论】:

        • 我在新的 CI 环境中回到了这个问题。即使安装了更高版本的 SDK,在我明确安装 2.0 SDK 之前,我仍然会收到此错误。
        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2021-09-25
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多