Вопрос

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

Я полагаю, что использую последнюю версию Nant, и я добавил .net framework 3.5 в nant.exe.config.Чего мне не хватает на сервере, и да, .net 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
Это было полезно?

Решение

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

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

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

Возможно, у вас не установлен пакет SDK .NET Framework 2.0.

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

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

Новое строковое значение в:HKEY_LOCAL_MACHINE\ПРОГРАММНОЕ ОБЕСПЕЧЕНИЕ\Microsoft.NetFramework

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

Со значением:C:\Program Файлы\Microsoft Visual Studio 8\SDK\версия v2.0\

Казалось, он ожил...

w://

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

<directory name="${path::combine(sdkInstallRoot, 'bin')}" if="${свойство::существует('sdkInstallRoot')}" />

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

Видишь http://www.mail-archive.com/nant-developers@lists.sourceforge.net/msg07519.html;это известная ошибка в 0.86 beta1.

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

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

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

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