MSBuild不在Build Task中部署MVC Application

时间:2013-07-15 18:41:11

标签: c# teamcity teamcity-8.0

最近被赋予了将MVC项目加载到TeamCity的任务。话虽如此,我了解到必须部署MVC应用程序,这与大多数“普通”Web应用程序不同。

所有这些都在考虑之中,我就像其他任何人一样构建项目构建任务,做了一些麻烦和谷歌的麻烦。

以下是我最终的结果:

  • 亚军类型:MSBuild
  • MSBuildVersion:4.0
  • MSBuild ToolsVersion:4.0
  • 运行平台:x64
  • 目标:构建;发布
  • 命令行参数:/ p:Configuration=Staging;PackageLocation="C:\Sites\temp_publish\project\prod\project.zip“

我已经读过我需要为服务器安装Web部署项目,但是我们没有在服务器上安装Visual Studio,只有TeamCity 8.x。

就个人而言,我想尝试将开发软件保留在服务器上,这样它就是客户端服务器的真实模型。

我需要放入什么其他设置,或者如果我必须拆分Build&部署成两个单独的任务,第二个任务应该是什么?

1 个答案:

答案 0 :(得分:2)

我花了一些时间回到我最初发布的问题。

最终的解决方案是将其添加到csproj文件中。

<Target Name="PublishToFileSystem" DependsOnTargets="PipelinePreDeployCopyAllFilesToOneFolder">
    <Error Condition="'$(PublishDestination)'==''" Text="The PublishDestination property must be set to the intended publishing destination." />
    <MakeDir Condition="!Exists($(PublishDestination))" Directories="$(PublishDirectories)" />
    <ItemGroup>
      <PublishFiles Include="$(_PackageTempDir)\**\*.*" />
    </ItemGroup>
    <Copy SourceFiles="@(PublishFiles)" DestinationFiles="@(PublishFiles->'$(PublishDestination)\%(RecursiveDir)%(Filename)%(Extension)')" SkipUnchangedFiles="true" />
</Target>

然后引用构建目标:PublishToFileSystem

MSBuild的参数部分最终看起来像:

/p:Configuration=Release;PublishDestination=%WebSiteDirectory%

%WebSiteDirectory%是网站的目标位置。