У меня есть nant, настроенный для создания моего проекта 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 Failed to initialize the 'Microsoft .NET Framework 2.0' (net-2.0) target framework.
Property evaluation failed. Expression: ${path::combine(sdkInstallRoot, 'bin')} ^^^^^^^^^^^^^^ Property 'sdkInstallRoot' has not been set.
For more information regarding the cause of the build failure, run the build again in debug mode. Try 'nant -help' for more information





Если вы используете бета-версию NAnt (которая в настоящее время является единственным способом получить поддержку для нацеливания на что-либо большее, чем платформа 2.0), возможно, вы столкнулись с проблемой реестра. Аналогичная проблема была сообщает Тим Барч.
В значительной степени все сводилось к тому, что NAntContrib (поставщик задачи msbuild) указывает на версию msbuild 2.0. Ознакомьтесь с его решением, чтобы узнать, применимо ли оно к вашему сценарию.
Я не совсем уверен в том, о чем вы спрашиваете, но если на вашем сервере сборки выполняется этот процесс nant, вам необходимо установить туда .NET 3.5 SDK.
См. http://www.mail-archive.com/[email protected]/msg07519.html; это известная ошибка в 0.86 beta1.
Возможно, у вас не установлен .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 не устанавливается.
Я исправил это, добавив в реестр следующее:
Новое строковое значение в: 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).
Я столкнулся с аналогичными проблемами с NAnt. Я знаю, что это не решение Лучший, но оно работает, если вам нужно сдвинуть проект с мертвой точки.
Я обнаружил, что установка среды разработки (C# Express у меня не сработала, но VS 2008 сработала) на сервере устраняет эту проблему. (Да, я понимаю, что это идет вразрез с обычными передовыми практиками, но это работает и позволяет запускать мои скрипты, чтобы я мог вернуться к кодированию.)
Просто подумал, что поделюсь, если кто-то еще окажется в подобной ситуации ... (это сработало для меня как с CruiseControl.Net, так и с Hudson).
Я вернулся к этому в новой среде CI. Даже с установленной более поздней версией SDK я все еще получал эту ошибку, пока я не установил 2.0 SDK явно.
Это было исправлено после выпуска 0.86 beta1. 1 апреля 2010 г. была выпущена версия 0.90 с исправлением на тот случай, если вы можете обновить nant. Для более подробной информации отметим, что выпуск исправления 0.90 представлял собой простые изменения в файле nant.exe.config. Текст, выделенный полужирным шрифтом ниже, был добавлен и, скорее всего, решит проблему без установки 2.0 SDK.
<directory name = "${path::combine(sdkInstallRoot, 'bin')}"if = "${property::exists('sdkInstallRoot')}" />
Обновите раздел net-2.0, чтобы исправить это.
Означает ли это, что мне нужно установить SDK на свой сервер сборки?