我正在使用 Subversion、CruiseControl、NAnt 和 Ivy 为 .Net 和 VB6 应用程序开发持续集成系统。
.Net 方面的问题不是太大,但我需要一些有关 VB6 方面的指导,更多来自“DLL 地狱”方面的指导!
我当前的设置是为我的 VB6 系统获取所有依赖文件,正如预期的那样,并在 ok 内构建各种项目。但是...它使用的是已经在我的 PC 上注册的 DLL,而不是我的 Lib 文件夹中的那些,这是我从 Ivy 解析我的依赖项的地方。
我可以通过在 Ivy 解决它们后注册下载的 DLL 来解决这个问题,这意味着项目文件可以指向本地 Lib 文件夹;但我希望我的 NAnt 脚本自动执行此操作,然后在构建过程完成后自动取消注册它们,以便下一个项目可以依次执行相同的操作。
我想我需要帮助的是让 Ivy 给我一份项目依赖项列表的能力......
例如,如果我正在构建依赖于项目 A、B 和 C 的项目 X,那么如果我可以向 Ivy 发出一个命令来返回诸如 A、B、C 之类的列表,那么我可以将它们传递给另一个目标依次注册/注销它们的过程...
这有意义吗?这可能吗,我是否以正确的方式看待这个问题?或者,还有更好的方法?
我很抱歉,我已经在房子周围解释了这一点......!
我已经将我的应用程序从.NET 1.1转换为.NET 3.5,不幸的是NAnt的标签不支持.NET 3.5.所以我试图使用标签直接启动msbuild.
这是我对.NET 1.1的看法:
<solution solutionfile="MyApp.sln"
configuration="ServerDebug" outputdir="MyApp\bin\ServerDebug">
<assemblyfolders>
<include name="Dependencies\Libs\bin\ServerDebug"/>
</assemblyfolders>
</solution>
Run Code Online (Sandbox Code Playgroud)
我把它改成了
<exec program="msbuild">
<arg value="MyApp.sln /p:Configuration=ServerDebug;OutDir=bin\ServerDebug\" />
</exec>
Run Code Online (Sandbox Code Playgroud)
所以一切都运行正常,除了我无法弄清楚如何复制真正方便的标签,这给编译器一个关于在哪里寻找依赖的提示.
我将什么传递给msbuild来复制功能?
用于项目,目标,任务,功能......的关键字在NAnt构建文件中是否区分大小写?
如何使用nant从nhibernate.config文件更改连接字符串
问题是所有的例子都是关于改变属性值,但是nhibernate有内部文本
EQ:
<hibernate-configuration xmlns="urn:nhibernate-configuration-2.2">
<session-factory>
<property name="connection.connection_string">Data Source.\server;Database=UnitTestDb;UID=user;pwd=pass;</property>
<property name="dialect">NHibernate.Dialect.MsSql2008Dialect</property>
<property name="connection.provider">NHibernate.Connection.DriverConnectionProvider</property>
<property name="connection.driver_class">NHibernate.Driver.SqlClientDriver</property>
<property name="show_sql">true</property>
<property name="connection.release_mode">auto</property>
<property name="adonet.batch_size">500</property>
....
Run Code Online (Sandbox Code Playgroud)
我需要更改属性connection.connection_string
<xmlpoke file="${nhibernate.file}"
xpath="/hibernate-configuration/session-factory/add[@key='connection.connection_string']/@value"
value="${connection.string}">
</xmlpoke>
Run Code Online (Sandbox Code Playgroud)
这在这种情况下不起作用.
谢谢
我问这个问题,因为我发现社区对各种构建引擎(如MSBuild和NAnt)的贡献确实包括了促进CI服务器的所有任务,比如从源代码控制获取版本,清理文件夹,更改构建号,发送电子邮件,等等...
是否只是因为它"监听"源控件存储库中发生的更改?还有什么我想念的?
我有一个试图在我的web.config中更改URL值的nant脚本但是Nant一直在抛出这个错误:
'=' is an unexpected token. The expected token is ';'. Line 1, position 80.
Run Code Online (Sandbox Code Playgroud)
我将其追溯到nant脚本的URL中的分号.我首先在URL中使用分号的原因是因为web.config不喜欢&符号(&).所以我不得不替换和&.这是我的web.config值:
<appSettings>
<add key="myUrl" value="http://www.google.com/whatever?id=myId&fullScreen=1"/>
</appSettings>
Run Code Online (Sandbox Code Playgroud)
我能够在web.config中xmlpo所有其他"添加键"但是这个,所以它不是一个xpath问题.这是nant脚本:
<property name="myUrl" value="http://www.google.com/whatever?id=123456&fullScreen=2"/>
<xmlpoke
file="${config.file}"
xpath="/configuration/appSettings/add[@key = 'myUrl']/@value"
value="${myUrl}">
</xmlpoke>
Run Code Online (Sandbox Code Playgroud)
所以问题不在于web.config中的分号,而是在nant脚本中使用分号.我想我需要以某种方式逃避nant脚本中的分号.任何人都知道如何做到这一点或其他什么来让它工作?
我希望从nant(0.91)目标中排除特定文件并处理剩余部分.
这是代码片段,显示我想要包含所有.js文件,但不包括foo.foo不被排除在外.我尝试在包含之前放置排除但是相同的结果.
<foreach item="File" in="${built.web.directory}\Content\js" property="filename">
<in>
<items basedir="${built.web.directory}\Content\js">
<include name="/**/*.js" />
<exclude name="**/foo.1.2.js" />
<exclude name="foo.1.2.js" />
</items>
</in>
<do>
<echo message="Compressing ${filename}" />
<exec program="${packer.exe}" commandline="-o ${built.web.directory}\Content\js\${path::get-file-name(filename)} -m jsmin ${filename}" />
</do>
</foreach>
Run Code Online (Sandbox Code Playgroud) 使用NAnt脚本,我正在寻找解决方案来删除.svn给定文件夹中递归命名的所有文件夹.
使用delete任务只删除一个文件/文件夹,但不能递归删除.
如果你知道如何,请帮忙.
此WiX安装项目在Visual Studio中编译没有问题.
但是,使用msbuild任务在NAnt中运行它会显示以下错误.
热预建事件:
"$(SolutionDir)\App_Tools\WiX Toolset v3.8\bin\heat.exe" dir "$(SolutionDir)\App_Shell \bin\$(ConfigurationName)" -dr "AppDirectory" -cg "AppComponentGroup" -t "$(ProjectDir)Filter.xslt" -gg -g1 -sf -srd -sreg -var "var.AppAppPath" -out "$(ProjectDir)\App_HarvestedHeatFile.wxs"
Run Code Online (Sandbox Code Playgroud)
msbuild任务:
<msbuild project="App_Installers\App.Setup\App.Setup.wixproj">
<property name="Configuration" value="Release"/>
<property name="target" value="Rebuild"/>
<property name="verbosity" value="Normal"/>
</msbuild>
Run Code Online (Sandbox Code Playgroud)
错误信息Prebuild:
[msbuild] Build started 03.02.2014 15:38:35.
[msbuild] Project "E:\Projects\Company\App\Development\trunk\src\App_Inst
allers\App.Setup\App.Setup.wixproj" on node 1 (default targets).
[msbuild] AssignCultures:
[msbuild] Culture: en-US
[msbuild] Culture: de-DE
[msbuild] PreBuildEvent:
[msbuild] "*Undefined if not building a solution or within Visual Studio*\App_Tools\WiX Toolset v3.8\bin\heat.exe" dir "*Undefined if not …Run Code Online (Sandbox Code Playgroud) nant ×10
msbuild ×3
.net ×2
xmlpoke ×2
ant ×1
asp.net ×1
build-server ×1
ivy ×1
maven ×1
nantcontrib ×1
nhibernate ×1
recursion ×1
svn ×1
vb6 ×1
web-config ×1
wix ×1