安装ASP.NET 2.0 SDK后,NAnt在Windows Server 2008上构建失败
题
我正在使用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
解决方案
可能导致这种情况的一些事情。
- 您没有安装完整的.Net 2.0 SDK。
- 您缺少一些注册表项。如果你在注册表中查看一个windows xp / vista机器并搜索sdkInstallRoot,你可能会找到它。只需将代码复制到您的服务器即可。 醇>
但要验证你是否安装了.net框架sdks,请至少转到C:\ windows \ Microsoft.net文件夹并转到所需的版本并在其中搜索以尝试查找说csc.exe或vbc.exe程序。如果您找不到它们,那么您没有安装SDK,但很可能已安装运行时。
试一试,看看是否有帮助。
其他提示
-
它需要<!> quot; frameworks <!>中的.net 3.5条目。部分。
-
确保本节中3.5版本的Sdkinstallroot如下,这是此问题的根本原因 -
<readregistry property="sdkInstallRoot" key="SOFTWARE\Microsoft\Microsoft SDKs\Windows\v7.0A\WinSDK-NetFx40Tools\InstallationFolder" hive="LocalMachine" failonerror="false" />
醇>
希望这有帮助!
当使用Nant与Windows Server 2003 64位服务器时,我不得不下载每晚构建为Nant 0.86 beta 1有64位问题。我确实让它工作但我不确定它是否适用于Windows Server 2008.Nant一直处于测试阶段。如果你坚持Nant尝试夜间构建,如果不是我推荐MSBuild for .Net 2+和64 bit机器。
有关详情,请查看此文章 MsBuild vs .Nant
我遇到过与NAnt类似的问题。我知道这不是 Best 解决方案,但是如果你需要让你的项目移动它是有效的。
我发现在服务器上安装开发环境(C#Express对我不起作用,但VS 2008没有用)会使这个问题消失。 (是的,我意识到这违反了正常的最佳做法,但它可以运行并让我的脚本运行,所以我可以回到编码。)
刚想我会分享任何其他人处于类似情况......(这对我和CruiseControl.Net以及Hudson都有用。)