我是新来的南特,并已能够创建<target>这
1)删除当前文件夹中的任何代码
2)从SVN导出新代码
3)在默认目录中构建代码,该目录是PrecompiledWeb文件夹(它是一个Web应用程序)
这里是:
<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>
Run Code Online (Sandbox Code Playgroud)
我想指定一个自定义输出目录("PrecompiledWeb"除外).这是可能的,你能告诉我必要的标签/财产吗?
谢谢!
编辑
感谢Scott和Si,我正在接近一个解决方案,但我仍然没有任何有效的方法.有评论引导我阅读关于MSBuild输出路径属性的这篇文章.使用他们的代码:
<?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>
Run Code Online (Sandbox Code Playgroud)
这将成功运行; 但是,在我的包含网站和类库的解决方案中,它将类库dll发布到指定的输出路径,但它仍然将实际网站发布到默认的PrecompiledWeb文件夹.
有没有人有任何关于如何从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>
Run Code Online (Sandbox Code Playgroud)
可以指定并覆盖msbuild的一些属性.要指定输出目录,请覆盖OutputDir属性.
<target name="export" description="export code from svn">
<delete dir="${Delete.Dir}" />
<exec program="svn" commandline="export ${MySVN.Repos} ${MySVN.Dest}" />
<msbuild project="${Solution.Filename}">
<property name="Configuration" value="Release"/>
<property name="OutputDir" value="${Output.Dir}"/>
</msbuild>
</target>
Run Code Online (Sandbox Code Playgroud)
只是快速浏览一下项目,OutputPath而不是OutputDir帮助吗?
另一个选项可能是Web部署项目,我喜欢它因为它调用aspnet_compiler以及C#编译器,因此它会解决在部署之前可能会错过的问题.
我们其中一个项目的构建脚本使用此命令发布Web应用程序:
msbuild.exe /t:_CopyWebApplication /p:Configuration=Release /p:OutDir=.\..\published\ /p:WebProjectOutputDir=.\..\published
Run Code Online (Sandbox Code Playgroud)
(此时当前目录设置为Web应用程序的项目目录,这就是为什么没有指定.csproj文件的原因.整个解决方案已在脚本的早期重建.)
听到它的声音,WebProjectOutputDir可能是你需要的属性.
/ t:_CopyWebApplication也可能很重要.我没有使用过NAnt所以我不知道你是否可以使用msbuild任务传递这个参数.您可能需要使用exec任务,例如:http://www.netomatix.com/development/wapwithnant.aspx.此示例似乎一次性重建和复制.
| 归档时间: |
|
| 查看次数: |
15214 次 |
| 最近记录: |