Thi*_*lan 6 .net nant publish web
问题:我想优雅地发布一个带有NAnt的MVC网站.
简单没有?错了......以下是我看过的一些stackoverflow资源.他们每个人都有一个问题......
Stackoverflow 1: 使用NAnt发布WebApplication
这个的结果是web.config没有被转换,并且其他文件显示在bin中,并不是想要所有东西的entity.dll.config!
Stackoverflow 2: 从命令行复制VS2008"发布网站"
这个将与之前的解决方案相同,除非它更糟糕......它将从我的项目中复制一切并将其转储到发布文件夹中......不是开玩笑!
Stackoverflow 3: MSBuild脚本和VS2010发布应用Web.config转换
接受的解决方案建立在Stackoverflow 1之上,但是纯粹的MsBuild xml而不是NAnt xml.它还只修复了Webconfig,因此仍然保留了显示的随机文件.pattersonc还提供了另一个解决方案(不接受),它非常非常接近正确,但web.config中的连接字符串处于虚假状态,让你又有了一个糟糕的web.config
毋庸置疑,已有3-4天,10多个不同的StackOverFlow答案,没有银弹......难道没有简单的解决方案吗?我是否必须犯下一些基本罪并创建一些可怕的混乱NAnt脚本来实现VS2010提供的正确发布结果?
好吧,我在这个博客上查了一下后就知道了, http://blogs.msdn.com/b/webdevtools/archive/2009/05/04/web-deployment-web-config-transformation.aspx
在步骤4中,他显示了一个我以前没见过的命令行arg,/ t:TransformWebConfig
不幸的是,仅凭这一点并不能解决问题.它确实执行转换,但转换可在obj/Release/TransformWebConfig/transformed/Web.config(obj/Release或obj/Debug或obj/YourTranformName)中找到.
所以最终得到一个体面的解决方案,这就是我必须要做的.
<exec program="${exec.msbuild}" failonerror="true">
<arg value="${path.sourceCode}/ProjectFolder/Project.csproj" />
<arg value="/p:Configuration=Release" />
<arg value="/t:ResolveReferences" />
<arg value="/t:_CopyWebApplication" />
<arg value="/t:TransformWebConfig" />
<arg value="/p:OutDir=${path.buildFromProject}/temp/" />
<arg value="/p:WebProjectOutputDir=${path.buildFromProject}/ProjectBuild/" />
</exec>
<delete dir="${path.build}/temp" failonerror="true"/>
<delete file="${path.build}/ProjectBuild/Web.config" failonerror="true"/>
<delete file="${path.build}/ProjectBuild/Web.Debug.config" failonerror="true"/>
<delete file="${path.build}/ProjectBuild/Web.Release.config" failonerror="true"/>
<copy file="${path.sourceCode}/ProjectFolder/obj/Release/TransformWebConfig/transformed/Web.config" tofile="${path.build}/ProjectBuild/Web.config" />
Run Code Online (Sandbox Code Playgroud)
请注意,OutDir与WebProjectOutputDir不同.这就是为什么:
使用我们不想要的OutDir从解决方案中的其他项目中获得了许多额外的包袱,因此我们只是将OutDir发送到临时文件夹并删除,如上面的步骤所示.OutDir绝对是必需的.如果删除它,构建将不起作用.似乎WebProjectOutputDir在OutDir之外工作.
整个设置只有一个小缺陷.bin库中缺少许多pdb文件.复制的唯一pdb是Web项目中的那个.
如果有人找到MSBuild的一步解决方案请发布:P虽然这是一个很好的解决方案,它仍然只有99.9999%完美,就像上面列出的那些我肯定会有一些细微差别或步骤错过.
| 归档时间: |
|
| 查看次数: |
1906 次 |
| 最近记录: |