简单的HelloWorld构建脚本

时间:2009-08-28 18:06:05

标签: c# .net .net-3.5 nant

我有一个简单的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 个答案:

答案 0 :(得分:2)

我在一个非常简单的控制台应用程序上尝试了你的构建文件,除了调整命令行参数之外,它对我来说都很好。

您是否尝试重新安装.net framework 3.5,因为它肯定会丢失(如果您尝试使用3.5框架目录中的确切路径从cmd行执行msbuild会发生什么?)

<?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 (Build 0.86.2898.0; beta1; 08/12/2007)
Copyright (C) 2001-2007 Gerry Shaw
http://nant.sourceforge.net

Buildfile: file:///C:/Documents and Settings/krystan/My Documents/Visual Studio
2008/Projects/HelloWorld/test.build
Target framework: Microsoft .NET Framework 3.5
Target(s) specified: build


build:

     [echo] Hello
     [exec] Microsoft (R) Build Engine Version 3.5.30729.1
     [exec] [Microsoft .NET Framework, Version 2.0.50727.3082]
     [exec] Copyright (C) Microsoft Corporation 2007. All rights reserved.
     [exec]

BUILD SUCCEEDED

Total time: 0.2 seconds.

答案 1 :(得分:1)

有时这个错误是因为构建服务器没有安装sdk。

尝试安装windows sdk。您可以在Microsoft Download Center

上下载

可能需要执行其他步骤才能识别sdk,请参阅此Page Brook's Blog Post

答案 2 :(得分:0)

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)。