Сбой сборки NAnt в Windows Server 2008 после установки ASP.NET 2.0 SDK

StackOverflow https://stackoverflow.com/questions/635224

  •  10-07-2019
  •  | 
  •  

Вопрос

Я использую TeamCity для управления одним из моих проектов, однако, похоже, он плохо работает с Nant на Windows Server 2008.Что я могу сделать, чтобы исправить это?

ПЕРЕД установкой пакета SDK для платформы ASP.NET 2.0 Framework:

[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
Это было полезно?

Решение

Пара вещей, которые могут вызвать это.

  1. У вас не установлен полный пакет .Net 2.0 SDK.
  2. Вам не хватает некоторых разделов реестра.Если вы заглянете в реестр, скажем, компьютера с Windows xp / vista и выполните поиск sdkInstallRoot, вы, вероятно, найдете его.Затем просто реплицируйте код на свой сервер.

Однако, чтобы убедиться, что у вас установлены пакеты sdk .net Framework, по крайней мере, просто перейдите в папку C:\windows\Microsoft.net и перейдите к нужной вам версии и выполните поиск внутри, чтобы попытаться найти, скажем, программы csc.exe или vbc.exe.Если вы не можете их найти, значит, у вас не установлен SDK, но, более чем вероятно, установлена среда выполнения.

Попробуйте и посмотрите, поможет ли это.

Другие советы

  1. Для этого требуется запись .net 3.5 в разделе «фреймворки».

  2. Гарантирует, что Sdkinstallroot версии 3.5 в разделе имеет следующий вид, что является основной причиной этой проблемы:
    <readregistry property="sdkInstallRoot" key="SOFTWARE\Microsoft\Microsoft SDKs\Windows\v7.0A\WinSDK-NetFx40Tools\InstallationFolder" hive="LocalMachine" failonerror="false" />

Надеюсь это поможет!

При использовании Nant с 64-разрядным сервером Windows Server 2003 мне пришлось загружать ночную сборку, поскольку бета-версия 1 Nant 0.86 имеет проблемы с 64-разрядной версией.Мне удалось заставить его работать, но я не уверен, будет ли он работать с Windows Server 2008.Нант всегда находился в бета-версии.Если вы застряли в Nant, попробуйте ночную сборку, если нет, я рекомендую MSBuild для .Net 2+ и 64-битных машин.

Для получения дополнительной информации ознакомьтесь с этой статьей MsBuild против.Нант

Я столкнулся с похожими проблемами с NAnt.Я знаю, что это не Лучший решение, но оно подойдет, если вам нужно продвинуть проект.

Я обнаружил, что установка среды разработки (C# Express у меня не сработала, но VS 2008 сработала) на сервере решает эту проблему.(Да, я понимаю, что это противоречит общепринятым рекомендациям, но это работает и позволяет запускать мои сценарии, поэтому я могу вернуться к кодированию.)

Просто подумал, что поделюсь, если кто-нибудь еще окажется в подобной ситуации ... (это сработало для меня как с CruiseControl.Net, так и с Hudson).

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top