我想在构建解决方案之前使用NAnt修改.h文件中的字符串.
.h文件中有一个宏:#define SERVER_ADDRESS"www.customserver.net",我想在部署软件之前修改字符串,这样每个构建都可以通过在命令行中传递地址来实现自定义地址.
有谁知道如何做到这一点?
谢谢!
我没有设置构建我的ASP.NET MVC项目,它在本地工作正常.我将nant添加到tools文件夹并将其添加到版本控制.TeamCity获取我的更改并启动构建但它失败了.
我相信我使用的是最新版本的Nant,我已将.net framework 3.5添加到nant.exe.config中.我在服务器上缺少什么,是的.net框架是安装在服务器上的,因为如果我在那里手动构建和部署asp.net mvc应用程序吗?
构建文件如下:
<target name="compile" description="Compiles using the AutomatedDebug Configuration">
<msbuild project="Tolt.Sims.sln" />
</target>
Run Code Online (Sandbox Code Playgroud)
这是错误:
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脚本并获取日志文件中每个任务的时间?
using nant <record> task or
NAnt -buildfile:testscript.build testnanttarget
Run Code Online (Sandbox Code Playgroud)
这会产生控制台输出,但我看不到任何计时信息.
我希望每个日志消息都以datatime为前缀.
我想知道是否有人在Windows Vista 64位版本上成功运行Nant.它一直在失败
设置道具:
[sysinfo]在sys.*下设置系统信息属性
建筑失败
属性名称"sys.env.CommonProgramFiles(x86)"无效.
我在一个由2名开发人员组成的团队中工作,目前我们使用VSS并且没有持续集成或每日构建以及很少的单元测试.
我希望将源代码控制更改为Subversion,同时启动并运行更专业的流程.
颠覆/巡航控制/ nant/nunit从我到目前为止看起来相当流行的组合,我刚刚将它们安装到备用机器上.
我已经下载了颠覆手册,只需一个工具即可400页.
真的,我只是想使用已经在野外证明的经过试验和测试的模式来启动和运行,然后根据需要进行调整,并且随着我对工具的熟悉程度的提高.
是否有人知道任何书籍/教程/演练仅涵盖了使用这种特定工具组合尽快启动和运行的基本知识?
在我的Nant脚本中,我想将属性值与已知字符串进行比较.在阅读了Nant Expressions文档之后,我相信我能够进行基本的'=='比较来评估为布尔值.
但是给出了脚本块:
<if test="${target.env} == Dev">
<echo message="***** You are using DEV"/>
</if>
Run Code Online (Sandbox Code Playgroud)
执行时我收到以下错误:
'Dev == Dev' is not a valid value for attribute 'test' of <if ... />.
Cannot resolve 'Dev == Dev' to boolean value.
String was not recognized as a valid Boolean.
Run Code Online (Sandbox Code Playgroud)
这似乎应该很简单(也可能是).如何比较Nant中的两个字符串或属性来评估为布尔值?
我有一个通用的common.xml文件,它包含许多在多个构建中重用的通用nant目标.我想要做的是"覆盖"其中一些非目标,并在执行现有目标之前或之后包含其他步骤.
是否首先使用当前文件中的nant目标?即.如果我在当前构建文件中创建一个nant目标,其名称与包含文件中的目标同名,那么是否会调用该目标并忽略包含的目标?如果是这种情况我可以做,并调用包含的目标,但看起来那将是一个递归调用,而不是一个包含的任务.
思考?
我在这里查看了其他几个与SGen相关的问题,他们的答案都不适用,或者他们的答案不能解决这个问题.我安装了几个SDK来解决这个问题没有运气.不应更改引用类型,因为这是唯一存在问题的地方.一旦建议将SGen.exe放入C:\Windows\Microsoft.NET\Framework\v3.5
文件夹,但是这不是在没有问题的框上完成的.在这种情况下,SGen.exe
实际存在并且它应该是正确的位置,但MSBuild仍然因为某些原因而遇到问题!
背景:
我们有一个NAnt脚本可以自动化我们的构建.在这种情况下,NAnt正在调用MSBuild,MSBuild正在生成声称无法找到SGen的错误.该项目基于.NET 3.5.我有我的主要开发环境(64位Vista Ultimate),其中脚本完美运行,我试图在VM(64位Win 7旗舰版)中复制它.我认为我已经掌握了一切我应该很好的东西但是在Win7盒子上失败了(在Vista盒子上完美运行).
我在两个盒子之间进行了一些比较,它们在这方面看起来都相同,但它仍然失败了.例如,两个机器上HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\.NETFramework
的sdkInstallRootv2.0
值都设置为C:\Program Files\Microsoft.NET\SDK\v2.0 64bit\
.在两台机器中,SGen.exe
都在该路径的bin
子目录中.
NAnt脚本:
<target name="report-installer" depends="fail-if-environment-not-set">
<exec program="MSBuild.exe" basedir="${framework35.directory}">
<arg value="${tools.directory.current}\ReportInstaller\ReportInstaller.sln" />
<arg value="/p:Configuration=${buildconfiguration.current}" />
</exec>
</target>
Run Code Online (Sandbox Code Playgroud)
我得到的错误信息是这样的:
report-installer:
[exec] Microsoft (R) Build Engine Version 3.5.30729.4926
[exec] [Microsoft .NET Framework, Version 2.0.50727.4927]
[exec] Copyright (C) Microsoft Corporation 2007. All rights reserved.
[exec]
[exec] Build started 4/8/2010 11:28:23 AM.
[exec] Project "C:\Projects\Production\Tools\ReportInstaller\ReportInstaller.sln" on node 0 (default targets).
[exec] …
Run Code Online (Sandbox Code Playgroud) 是的,我知道这听起来有点疯狂,但我已经在现场部署了.Net 3.5,我想使用新的4.0编译器来定位它.
我想在最新版本的Vb.Net和C#中使用几种新的语法糖功能,但我(目前尚未)在我的客户端基础上强制推出新版本的.Net框架和CLR.
在反对者双脚跳入之前...我刚刚成功使用Studio 2010来编译一个使用VB.Net自动属性的3.5目标应用程序(VB.Net 10中的一个新功能)所以我知道编译器能够以某种方式.
回到我的问题.... 我如何说服Nant使用4.0编译器,但目标是.Net 3.5(CLR 2.0)
更新:我使用的是csc和vbc任务,而不是解决方案任务.虽然我现在已经决定如何直接与编译器这样做了.