Почему Nant не работает с TeamCity?

У меня есть 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
Стоит ли изучать PHP в 2026-2027 годах?
Стоит ли изучать PHP в 2026-2027 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Приемы CSS-макетирования - floats и Flexbox
Приемы CSS-макетирования - floats и Flexbox
Здравствуйте, друзья-студенты! Готовы совершенствовать свои навыки веб-дизайна? Сегодня в нашем путешествии мы рассмотрим приемы CSS-верстки - в...
Тестирование функциональных ngrx-эффектов в Angular 16 с помощью Jest
В системе управления состояниями ngrx, совместимой с Angular 16, появились функциональные эффекты. Это здорово и делает код определенно легче для...
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
7
0
4 963
6
Перейти к ответу Данный вопрос помечен как решенный

Ответы 6

Ответ принят как подходящий

Если вы используете бета-версию NAnt (которая в настоящее время является единственным способом получить поддержку для нацеливания на что-либо большее, чем платформа 2.0), возможно, вы столкнулись с проблемой реестра. Аналогичная проблема была сообщает Тим ​​Барч.

В значительной степени все сводилось к тому, что NAntContrib (поставщик задачи msbuild) указывает на версию msbuild 2.0. Ознакомьтесь с его решением, чтобы узнать, применимо ли оно к вашему сценарию.

Означает ли это, что мне нужно установить SDK на свой сервер сборки?

Stefan Moser 18.11.2008 03:49

Я не совсем уверен в том, о чем вы спрашиваете, но если на вашем сервере сборки выполняется этот процесс nant, вам необходимо установить туда .NET 3.5 SDK.

Scott Saad 19.11.2008 18:15

См. 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 не устанавливается.

Brett Rigby 03.02.2012 20:59

Я исправил это, добавив в реестр следующее:

Новое строковое значение в: 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).

J P 17.03.2010 13:01

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

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

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

Я вернулся к этому в новой среде CI. Даже с установленной более поздней версией SDK я все еще получал эту ошибку, пока я не установил 2.0 SDK явно.

Peter Bernier 03.02.2010 23:46

Это было исправлено после выпуска 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, чтобы исправить это.

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