【发布时间】:2009-02-25 20:19:00
【问题描述】:
我是 NAnt 的新手,并且能够创建一个 <target>
1) 从当前文件夹中删除所有代码
2) 从 SVN 导出新代码
3) 在默认目录 PrecompiledWeb 文件夹(它是一个网络应用程序)中构建代码
这里是:
<target name="export" description="export code from svn">
<delete dir="${Delete.Dir}"></delete>
<exec program="svn" commandline="export ${MySVN.Repos} ${MySVN.Dest}" />
<msbuild project="${Solution.Filename}">
<property name="Configuration" value="Release"/>
</msbuild>
</target>
我想指定一个自定义输出目录(“PrecompiledWeb”除外)。这可能吗?您能否告诉我必要的标签/属性?
谢谢!
编辑
感谢 Scott 和 Si,我离解决方案越来越近了,但我仍然没有任何可行的方法。 cmets 将我带到MSBuild's Output Path Property 上的这篇文章。使用他们的代码:
<?xml version="1.0"?>
<project name="test" default="build" basedir="." xmlns="http://nant.sf.net/schemas/nant-0.84.win32.net-1.0.xsd">
<target name="build">
<exec program="${framework::get-framework-directory('net-3.5')}/msbuild.exe">
<arg value="${Full.Path}\Code\MySolution.sln" />
<arg value="/p:OutputPath=${Full.Path}\Output\" />
</exec>
</target>
</project>
这将成功运行;但是,在我的包含网站和类库的解决方案中,它将类库 dll 发布到指定的输出路径,但它仍然将实际网站发布到默认的 PrecompiledWeb 文件夹。 p>
有人对如何从 NAnt 更改 PrecompiledWeb 文件夹路径有任何建议吗?
再次感谢所有帮助过的人!
编辑 2 最终解决方案
这是我最终能够开始工作的内容(针对 .net 4 进行了更新):
<exec program="${framework::get-framework-directory('net-4.0')}/msbuild.exe">
<arg value="${Full.Path}\Code\MySolution.sln" />
<arg value="/t:Rebuild" />
<arg value="/t:ResolveReferences" />
<arg value="/t:_CopyWebApplication" />
<arg value="/p:OutDir=${Build.Output}bin\" />
<arg value="/p:WebProjectOutputDir=${Build.Output}" />
<arg value="/p:Configuration=Release" />
</exec>
【问题讨论】:
-
如果您使用 Web 部署项目,您可以为整个网站定义 OutputPath。除此之外,也许您还需要深入研究 Microsoft MSBuild 脚本?