首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >为什么我的nant任务在CruiseControl上失败(找不到nunit)?

为什么我的nant任务在CruiseControl上失败(找不到nunit)?
EN

Stack Overflow用户
提问于 2009-07-15 12:17:03
回答 2查看 2.6K关注 0票数 3

当我在(Windows Server2003)上的巡航控制下运行nant脚本时,它会失败,但在控制台上运行时运行得很好。

nant脚本(相关部分):

代码语言:javascript
复制
<target name="compile" depends="init">
    <echo message="Build Directory is ${build.dir}" />
    <exec program="${framework::get-framework-directory(framework::get-target-framework())}\msbuild.exe"
          commandline="${solution.file} /m /t:Clean /p:Configuration=${project.config} /v:q" workingdir="." />
    <exec program="${framework::get-framework-directory(framework::get-target-framework())}\msbuild.exe"
          commandline="${solution.file} /m /t:Rebuild /p:Configuration=${project.config} /v:q" workingdir="." />
</target>

cc配置:

代码语言:javascript
复制
<tasks>

    <nant>
        <executable>C:\Program Files\nant-0.86-beta1\bin\nant.exe</executable>
        <baseDirectory>C:\Builds\WorkManagement\RC1</baseDirectory>
        <buildArgs>-D:outputType=Xml</buildArgs>
        <nologo>false</nologo>
        <buildFile>WaterWorks.build</buildFile>
        <targetList>
            <target>build</target>
        </targetList>
        <buildTimeoutSeconds>1200</buildTimeoutSeconds>
    </nant>

</tasks>

这一直在工作,但我认为nunit最近的升级(到2.5.1)让事情变得混乱了。

cc nant日志:

代码语言:javascript
复制
    Buildfile: file:///C:/Builds/WorkManagement/RC1/WaterWorks.build 
    Target framework: Microsoft .NET Framework 3.5 
    Target(s) specified: build 
    [loadtasks] Scanning assembly "NCoverExplorer.NAntTasks" for extensions. 
    [property] Read-only property "outputType" cannot be overwritten. 

    clean: 

    [delete] Deleting directory 'C:\Builds\WorkManagement\RC1\build'. 

    version: 

    init: 

    [tstamp] 15 July 2009 10:31:20. 
    [mkdir] Creating directory 'C:\Builds\WorkManagement\RC1\build\net-3.5.win32-WaterWorksConsole-release\'. 
    [echo] Current Directory: C:\Builds\WorkManagement\RC1 

    drop-database: 

    create-database: 

    compile: 

    [echo] Build Directory is build/net-3.5.win32-WaterWorksConsole-release/ 
    [exec] Microsoft (R) Build Engine Version 3.5.21022.8 
    [exec] [Microsoft .NET Framework, Version 2.0.50727.1433] 
    [exec] Copyright (C) Microsoft Corporation 2007. All rights reserved. 
    [exec] Microsoft (R) Build Engine Version 3.5.21022.8 
    [exec] [Microsoft .NET Framework, Version 2.0.50727.1433] 
    [exec] Copyright (C) Microsoft Corporation 2007. All rights reserved. 
    [exec] C:\WINDOWS\Microsoft.NET\Framework\v3.5\Microsoft.Common.targets : warning MSB3245: Could not resolve this reference. Could not locate the assembly "nunit.framework, Version=2.5.1.9189, Culture=neutral, PublicKeyToken=96d09a1eb7f44a77, processorArchitecture=MSIL". Check to make sure the assembly exists on disk. If this reference is required by your code, you may get compilation errors. 
    [exec] AddressTests.cs(1,7): error CS0246: The type or namespace name 'NUnit' could not be found (are you missing a using directive or an assembly reference?) 
  :
  :

运行nant的控制台命令:

代码语言:javascript
复制
nant /f:WaterWorks.build build

有点迷惑!有谁能给我指个方向吗?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2009-07-15 12:20:03

那么,您是否在广域云中的连续构建机器上安装了NUnit版本2.5.1.9189?(正是这个版本。)

就我个人而言,我不喜欢在GAC中安装依赖项-我喜欢用相对路径显式地引用它们,但YMMV。

票数 3
EN

Stack Overflow用户

发布于 2010-02-23 02:08:53

将CruiseControl Windows服务帐户从本地系统更改为管理员或其他更高级别的帐户,解决了我们遇到的类似问题。由于某些原因,我还没有弄清楚本地系统帐户无法正常访问GAC。

如你所知,我们在Windows Server2008 R2 (x64)上使用Apache2.2(32位),CruiseControl 2.8 (32位Java版本,而不是CruiseControl.NET)。在NAnt中,我们使用Devenv.com来构建解决方案:

代码语言:javascript
复制
<exec program="Devenv.com" basedir="${compiler.basedir}">
  <arg line='/rebuild "Release" "${solution.file}"' />
</exec>

我知道这是一个古老的问题,但也许上面的问题会对其他有类似问题的人有所帮助。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/1131047

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档