MSBuild DeployOnBuild = true不发布

Tho*_*mas 39 asp.net msbuild publishing asp.net-mvc-2

我有一个Visual Studio 2010 MVC2 Web应用程序,我正在使用Hudson通过命令行构建.我想让Hudson发布一个Web输出,所以我将DeployOnBuild = true和CreatePackageOnPublish = True标记添加到我的命令行.

我的命令是:

C:\Windows\Microsoft.NET\Framework\v4.0.30319\MSBuild.exe 
   /target:Clean,Build 
   /property:Configuration=Debug;DeployOnBuild=True;CreatePackageOnPublish=True; 
   [my project name.csproj]
Run Code Online (Sandbox Code Playgroud)

在我的开发机器(Windows 7)上运行此命令成功发布了一个Web输出\obj\Debug\Package\PackageTmp\.但是在Hudson服务器(WS 2008)上运行它会成功编译,但它不会发布.相同的命令,相同版本的MSBuild,相同的源代码.

我已经尝试了/t:Publish目标,这给了我一个Skipping Unpublishable Project响应,正如我在其他几个人的帖子中看到的那样.

我已经尝试将DeployOnBuild=TrueCreatePackageOnPublish=True标签添加到我的项目文件中,并且没有任何变化.

有关为什么不发布的任何想法?我错误地使用这些标签吗?我确信这里有一些我没看到的东西.

Bri*_*hey 40

假设您的hudson服务器上没有安装Visual Studio 2010,那么可能是您缺少发布"目标"文件.经过大量的从头到脚的敲打,我终于解决了这个问题.

很长一段时间我都知道我需要复制目录

C:\ Program Files(x86)\ MSBuild\Microsoft\VisualStudio\v10.0\WebApplications

从我的VS2010本地机器到我的服务器,以便建立项目.但是要让项目也发布我还需要复制目录

C:\ Program Files(x86)\ MSBuild\Microsoft\VisualStudio\v10.0\Web

注:在我的情况下,我竟犯下这些文件夹到我的源代码控制和改变<MSBuildExtensionsPath32>在我的csproj文件的价值指向这些签出的文件夹(所以少了一个步骤预备的服务器时).这不是让它工作的必要条件,但您可能需要在解决问题后考虑这一点.

更新:所以在我做了上述之后,构建抱怨它找不到"Microsoft.Web.Deployment.dll".为了解决这个问题,我需要在服务器上安装Microsoft Web Deploy v2.0,即使我只发布到文件系统.我想我可以看到这里的逻辑.

更新:我发现通过IIS Web平台安装程序安装"Visual Studio 2010 Shell(集成)"将安装所需的构建目标.这似乎是在没有在服务器上安装整个Visual Studio应用程序而不是从开发机器手动将看似任意的文件夹复制到服务器之间的一个很好的折衷方案.

  • 已经完成了这个,我仍然得到相同的结果.DeployOnBuild仍然被忽略. (2认同)