如何使用命令提示符MSBuild?
我有一个网站 (不是web application
,它是一个website
),我想从command prompt
发布它。
我想将它发布在同一目录(每晚),我不想使用像TeamCity,TFS或第三方工具(如Nant)这样的Build Automation工具。
它应该用MSBuild
完成。
我怎样才能做到这一点?
更新:在发布窗口中,应检查的唯一选项是Use Fixed naming and single page assemblies
从您的评论中,您的Web项目是一个Web站点项目,而不是Web应用程序项目。
在这种情况下,“发布”目标不能作为选项,但“AspNetCompiler”是解决方案。
创建一个包含以下内容的xml文件,并从MSBuild中调用它。
此处可以参考此任务,您可以配置所有取消/检查选项。
FixedName =“True”等于“使用固定命名和单页…”选项的检查。
然后从MSBuild而不是解决方案文件中调用此文件。
MSBuild your.xml /p:Configuration=
只要您的类库被您的网站项目引用,它们就会一起构建。
MSBuild.exe **MYPROJ**.sln /p:outdir="Z:\output\\",OutputPath="Z:\output\\",webprojectoutputdir="Z:\output\\",configuration=RELEASE /t:Clean;Build /flp1:logfile=Z:\output\\\Log_msbuild.log;verbosity=detailed /flp2:logfile=Z:\output\\\Log_warnings.log;warningsonly;verbosity=detailed /flp3:logfile=Z:\output\\\Log_errors.log;errorsonly;verbosity=detailed /nologo /noconlog
İt可以编译所有类型的项目(Web,Web服务,桌面,..),它可以创建日志文件(buildlog,错误和警告)。
对不起,迟到的回复,感谢输入阿兰。 不幸的是你的建议不起作用所以我最终做了以下事情:
- 选择
This build does not copy output files to a drop folder
“构建默认值”选项卡下的This build does not copy output files to a drop folder
- 使用“处理”选项卡下的默认模板
- 选择
AsConfigured
作为2. Build
在Process选项卡下的2. Build
下的Output location
的值 -
使用此MSBuild参数字符串:
/p:DeployOnBuild=True;DeployTarget=PipelinePreDeployCopyAllFilesToOneFolder;PackageTempRootDir="\\192.168.xx\Nightly\MainBranch";AutoParameterizationWebConfigConnectionStrings=false
此结果是以下文件夹,我将其用作测试站点的webroot: \\192.168.xx\Nightly\MainBranch\PackageTmp
。 这显然不是最优的,因为我不想拥有PackageTmp
文件夹,而且我还没有测试当同一个解决方案中有多个Web应用程序时会发生什么,但我不能在这个问题上花更多的时间。
我真的不明白为什么微软这么简单的任务如此复杂。