如何使用命令行的MSBuild到是没有预编译它部署VS2012网站项目?(How to use co

2019-07-19 17:54发布

我继承了一个非常大的VS2012网站项目(非Web应用程序),我试图将其自动化的部署。 有吨项目循环引用,从而得到它使用aspnet_compiler.exe我必须打开fixednames预编译。 但问题是它会导致生成拿我的四核处理器,16GB内存,SSD开发商机约20分钟。 以前的开发商没有处理这个,他将整个源只是复制到生产Web服务器。

所以之前我解决循环引用问题,我想用msdeploy至少自动部署项目。 我可以使用发布Visual Studio中的配置文件,它不正是我想要什么:

  1. 构建引用的DLL,并将它们添加到项目中。
  2. 是否在web.config变换。
  3. 甚至不试图建立的网站只是打包到我的一个zip文件。

我想不通,我的生活是如何得到MSBuild.exe做同样的事情!

MSBuild.exe WebProject.vs2012.sln /m /T:Build 
    /p:Configuration=Release`;DeployOnBuild=true`;PublishProfile=TestDeploy

上面还命令试图执行aspnet_compiler这是不是我想要的。 发布配置文件说,它不应该被预编译......但在日志中我看到它执行它。

所以:我如何可以使用到的MSBuild没有预编译它部署网站项目?

Answer 1:

对于网站项目发布过程中没有管道传送到构建过程。 对于网站项目,因为没有正式的构建过程中没有什么让我们真正扩大。

注:以下内容需要有VS 2012(或VS2010为此事)和Azure的SDK最重要的是。 该功能不包括在VS2012的RTM下降。

创造VS发布配置文件创建以下后:

  1. A项的App_Data / PublishProfiles发布配置文件(.pubxml文件)
  2. 一个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 。 安装,你不应该看到非必要编译预处理步骤之后。 请让我知道如果你还是看到了。



Answer 2:

虽然赛义德·易卜拉欣·哈希米的回答也帮我一些,这里是我发现neccessary为VS2012:

安装在Azure SDK后,我创建了一个文件发布配置文件,它创造了一个PublishProfiles在文件夹Properties我的项目的文件夹中。 这里面新的文件夹,两个XML文件名为my_sample_PublishProfile_Foo.pubxmlmy_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?