如何使用命令行msbuild部署VS2012网站项目,而无需预编译
vs2008:
msbuild website\websiteApp.csproj /t:ResolveReferences;Compile /t:_CopyWebApplication /p:Configuration=Release /p:WebProjectOutputDir=d:\website /p:OutputPath=d:\website\bin
vs2010:
cd C:\Windows\Microsoft.NET\Framework\v4.0.30319
msbuild website\websiteApp2010.csproj /t:ResolveReferences;Compile /t:_WPPCopyWebApplication /p:Configuration=Release /p:WebProjectOutputDir=d:\website
差别在于:
1.msbuild需要用4.0的
2.原先的 _CopyWebApplication 不支持,还为_WPPCopyWebApplication
3.原先的 /p:OutputPath 不需要使用
4.指定平台 /p:Platform=AnyCPU ,主要是有些项目可能是发布到64位平台,使用这个指令可以指定最终生成的目标平台
在VS中创建发布配置文件后,将创建以下内容:
> App_Data / PublishProfiles下的发布配置文件(.pubxml文件)
>网站根目录下的website.publishproj
website.publishproj的目的是方便命令行发布。它是.csproj / .vbproj的一个填充,你通常在使用Web应用程序项目时会得到。
如果要自动发布,可以使用如下命令。
msbuild.exe website.publishproj /p:DeployOnBuild=true /p:PublishProfile=<profile-name-no-extension> /p:VisualStudioVersion=11.0
msbuild Web.csproj /t:ResolveReferences;Compile /t:_CopyWebApplication /p:Configuration=Release /p:WebProjectOutputDir=C:\publish /p:OutputPath=C:\publish\bin
msbuild.exe ****.csproj /p:DeployOnBuild=true;PublishProfile=IISProfile
/p:UserName=scw /p:Password=12345 /p:VisualStudioVersion=11.0
msbuild foo.sln /p:PreBuildEvent= /p:PostBuildEvent=
其实MSBuild可以加参数来屏蔽警告,有两种方式:
- 1.使用
/p:nowarn=1591
可以屏蔽CS1591警告信息.如果要同时指定屏蔽多个,可以这样/p:nowarn="105,1591,1572,1573"
- 2.使用
/p:WarningLevel=0
可以屏蔽所有警告.WarningLevel的分级信息如下:0
关闭所有的警告。1
仅显示严重警告。2
显示 1 级的警告以及某些不太严重的警告,例如有关隐藏类成员的警告。3
显示级别 2 警告以及某些不太严重的警告,例如关于始终评估为true
或false
的表达式的警告。4
默认值 显示所有 3 级警告和普通信息警告。