我继承了一个非常大的VS2012网站项目(非Web应用程序),我试图将其自动化的部署。 有吨项目循环引用,从而得到它使用aspnet_compiler.exe我必须打开fixednames预编译。 但问题是它会导致生成拿我的四核处理器,16GB内存,SSD开发商机约20分钟。 以前的开发商没有处理这个,他将整个源只是复制到生产Web服务器。
所以之前我解决循环引用问题,我想用msdeploy至少自动部署项目。 我可以使用发布Visual Studio中的配置文件,它不正是我想要什么:
- 构建引用的DLL,并将它们添加到项目中。
- 是否在web.config变换。
- 甚至不试图建立的网站只是打包到我的一个zip文件。
我想不通,我的生活是如何得到MSBuild.exe做同样的事情!
MSBuild.exe WebProject.vs2012.sln /m /T:Build
/p:Configuration=Release`;DeployOnBuild=true`;PublishProfile=TestDeploy
上面还命令试图执行aspnet_compiler这是不是我想要的。 发布配置文件说,它不应该被预编译......但在日志中我看到它执行它。
所以:我如何可以使用到的MSBuild没有预编译它部署网站项目?
对于网站项目发布过程中没有管道传送到构建过程。 对于网站项目,因为没有正式的构建过程中没有什么让我们真正扩大。
注:以下内容需要有VS 2012(或VS2010为此事)和Azure的SDK最重要的是。 该功能不包括在VS2012的RTM下降。
创造VS发布配置文件创建以下后:
- A项的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
你不应该指定哪些目标调用。
关于VS消息,该网站正在预编译,这是一个错误。 它贯穿于预编译,但在配置文件发布使用设置。 该错误应该被固定在Visual Studio中更新1 。 安装,你不应该看到非必要编译预处理步骤之后。 请让我知道如果你还是看到了。
虽然赛义德·易卜拉欣·哈希米的回答也帮我一些,这里是我发现neccessary为VS2012:
安装在Azure SDK后,我创建了一个文件发布配置文件,它创造了一个PublishProfiles
在文件夹Properties
我的项目的文件夹中。 这里面新的文件夹,两个XML文件名为my_sample_PublishProfile_Foo.pubxml
和my_sample_PublishProfile_Foo.pubxml.user
哪里创建。
使用.pubxml,我能够与发布msbuild
是这样的:
c:\Windows\Microsoft.NET\Framework\v4.0.30319\msbuild.exe "C:\...\UI.csproj" /p:DeployOnBuild=true /p:PublishProfile="C:\...\PublishProfiles\my_sample_PublishProfile_Foo.pubxml" /p:VisualStudioVersion=11.0
记住要运行包含该脚本具有管理员权限的批处理文件。
文章来源: How to use command line msbuild to deploy VS2012 Web Site project without precompiling it?