2008-10-27 2 views
7

У меня есть nant, созданный для моего проекта ASP.NET MVC, и он отлично работает локально. Я добавляю nant в папку с инструментами и добавляю его в элемент управления версиями. TeamCity собирает мои изменения и запускает сборку, но она терпит неудачу.Почему Нант не работает с TeamCity?

Я считаю, что использую последнюю версию Nant, и я добавил .NET Framework 3.5 в файл nant.exe.config. Что мне не хватает на сервере, и да. Framework framework установлен на сервере, поскольку приложение 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 

ответ

4

Если вы используете бета-версию NAnt (который в настоящее время это единственный способ получить поддержку для таргетинга на что-либо большее, чем 2.0 framew ork), возможно, вы столкнулись с проблемой реестра. Аналогичная проблема была reported by Tim Barcz.

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

+0

Означает ли это, что мне нужно установить SDK на моем сервере сборки? – 2008-11-18 00:49:12

+0

Я не совсем уверен в том, что вы просите, но если ваш сервер сборки находится там, где выполняется этот процесс, тогда вам потребуется установить .NET 3.5 SDK. – 2008-11-19 15:15:10

4

Возможно, у вас нет установленной версии .NET Framework 2.0 SDK.

Вы можете установить его с http://www.microsoft.com/downloads/details.aspx?familyid=fe6f2099-b7b4-4f47-a244-c96d69c35dec&displaylang=en

+0

В этом проблема была у меня тоже. Не имея установленного .Net 2.0 SDK, свойство sdkInstallRoot не будет установлено. – 2012-02-03 16:59:26

3

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

Новое значение строки по адресу: HKEY_LOCAL_MACHINE \ SOFTWARE \ Microsoft.NETFramework

Названный: sdkInstallRootv2. 0

Со значением: C: \ Program Files \ Microsoft Visual Studio 8 \ SDK \ v2.0 \

Показалось к весне в жизнь ...

w: //

+1

Спасибо, что сделал это для меня (но это должно быть HKEY_LOCAL_MACHINE \ SOFTWARE \ Microsoft \ .NETFramework). – 2010-03-17 10:01:54

0

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

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

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

2

Это было исправлено после выпуска версии 0.86 beta1. 1 апреля 2010 года было выпущено 0.90 с исправлением в случае, если обновление nant является для вас вариантом. Чтобы обеспечить дополнительную детализацию, исправление в 0.90, по-видимому, было простым изменением в файле nant.exe.файл конфигурации. Добавлен полужирный текст ниже и, вероятно, устранит проблему без необходимости установки 2.0 SDK.

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

Обновите раздел net-2.0, чтобы исправить его.

Смежные вопросы