Простой скрипт сборки HelloWorld
У меня есть простое приложение HelloWorld, которое я пытаюсь построить с помощью NAnt. Однако, даже с простейшими файлами сборки, я все еще не могу заставить его работать. Ниже мой файл HelloWorld.build.
<?xml version="1.0"?>
<project name="Hello World" default="build">
<property name="nant.settings.currentframework" value="net-3.5"/>
<target name="build">
<echo>Hello</echo>
<exec program="${framework::get-framework-directory(framework::get-target-framework())}\msbuild.exe"
commandline="HelloWorld /t:Clean /p:Configuration=Debug /v:q" workingdir="." />
</target>
Вот результаты.
C:\webdev\HelloWorld>c:\nant-0.86-beta1\bin\NAnt.exe build
NAnt 0.86 (Build 0.86.2898.0; beta1; 12/8/2007)
Copyright (C) 2001-2007 Gerry Shaw
http://nant.sourceforge.net
Buildfile: file:///C:/webdev/HelloWorld/HelloWorld.build
Target framework: Microsoft .NET Framework 2.0
Target(s) specified: build
[property] Target framework changed to "Microsoft .NET Framework 3.5".
BUILD FAILED
INTERNAL ERROR
System.NullReferenceException: Object reference not set to an instance of an object.
at NAnt.Core.FrameworkInfo.get_Version()
at NAnt.Core.Project.UpdateTargetFrameworkProperties()
at NAnt.Core.Tasks.PropertyTask.ExecuteTask()
at NAnt.Core.Task.Execute()
at NAnt.Core.Project.InitializeProjectDocument(XmlDocument doc)
at NAnt.Core.Project.Execute()
at NAnt.Core.Project.Run()
Please send bug report to nant-developers@lists.sourceforge.net.
Total time: 0 seconds.
Кроме того, когда я пытаюсь вручную установить платформу.NET, я получаю следующее:
C:\webdev\HelloWorld>c:\nant-0.86-beta1\bin\NAnt.exe -t:net-3.5
NAnt 0.86 (Build 0.86.2898.0; beta1; 12/8/2007)
Copyright (C) 2001-2007 Gerry Shaw
http://nant.sourceforge.net
Microsoft .NET Framework 3.5 (net-3.5) is not installed, or not correctly configured.
Object reference not set to an instance of an object.
Однако в файле конфигурации есть запись для.NET 3.5 . Это с NAnt-0.86-beta и Visual C# 2008 Express Edition. Я совершенно не в курсе? Если да, есть ли у кого-нибудь файл сборки шаблона, который можно использовать повторно?
Спасибо.
3 ответа
Ну, я попробовал ваш файл сборки в очень простом консольном приложении, и, кроме настройки аргументов командной строки, все это прекрасно работает для меня.
Вы пытались переустановить.net Framework 3.5, поскольку он определенно выглядит так, как будто этого не хватает (что произойдет, если вы попытаетесь выполнить msbuild из строки cmd с точным путем из каталога 3.5 framework?)
<?xml version="1.0"?>
<project name="HelloWorld" default="build">
<property name="nant.settings.currentframework" value="net-3.5"/>
<target name="build">
<echo>Hello</echo>
<exec program="${framework::get-framework-directory(framework::get-target-framework())}\msbuild.exe" commandline="HelloWorld.sln /t:Clean /p:Configuration=Debug /v:q" workingdir="." />
</target>
</project>
вывод для моего проекта выглядит следующим образом
NAnt 0.86 (сборка 0.86.2898.0; бета1; 12.08.2007) Copyright (C) 2001-2007 Джерри Шоу http://nant.sourceforge.net Buildfile: file: /// C: / Documents and Settings / krystan / Мои документы /Visual Studio 2008/ Проекты /HelloWorld/test.build Целевая среда: Microsoft .NET Framework 3.5 Заданные цели: сборка построить: [эхо] Привет [exec] Microsoft (R) Build Engine Версия 3.5.30729.1 [exec] [Microsoft .NET Framework, версия 2.0.50727.3082] [exec] Copyright (C) Microsoft Corporation 2007. Все права защищены. [ВЫПЛНЫ] СТРОИТЬ УСПЕШНО Общее время: 0,2 секунды.
Иногда эта ошибка возникает из-за того, что на сервере сборки не установлен SDK.
Попробуйте установить Windows SDK. Вы можете скачать его в Центре загрузки Microsoft
Дополнительные шаги могут потребоваться, чтобы получить nant для распознавания SDK, пожалуйста, обратитесь к этой странице в блоге Брука
В Nant 0.86 есть ошибка, см. http://sourceforge.net/tracker/index.php?func=detail&aid=1986551&group_id=31650&atid=402868 для получения дополнительной информации.
Вы можете скачать Nant nightly build (в настоящее время nant-0.86-nightly-2009-05-05), в котором исправлена эта ошибка.