如何在Visual Studio 2008中自动发布构建网站?

时间:2010-02-14 19:41:35

标签: c# asp.net asp.net-mvc visual-studio visual-studio-2008

我希望每次构建web asp.net mvc 2项目时都能自动发布到本地文件夹。

我使用的是Visual Studio 2008。

5 个答案:

答案 0 :(得分:13)

嗯,你可以在后期制作活动中with MSBuild

但你确定要这么做吗?它会降低你的速度,你可能不需要为每个构建发布?为什么不在IIS而不是Cassini中运行该站点。

答案 1 :(得分:7)

第1步。 确保您有一个Web项目。

第2步。 转到查看 - >工具栏 - >网络单击发布。

工具栏上的发布按钮web按钮可以执行您想要的操作...一步构建和发布。

答案 2 :(得分:5)

自动化Visual Studio在“构建”菜单中提供的“发布”操作中包含的功能的最简单方法是使用web deployment project。 VS2005也有一款。基本上,这是一个额外的项目,您添加到您的解决方案,将针对您的Web项目,并在构建时将作为构建过程的一部分发布您的Web项目。它使得自动构建站点作为构建的一部分而不会与MSBuild混淆(尽管MSBuild并不那么困难),这很简单。

答案 3 :(得分:2)

以下是我在网站项目中的使用方法。请注意,这将复制到一个文件夹;如果要通过FTB,WebDav或SSH公开,则需要使用Exec任务而不是Copy任务,并指定可以通过所需协议部署文件的命令行工具。 / p>

此外,您无法从VS IDE中的项目设置编辑AfterBuild任务。您需要在记事本或您喜欢的文本/ XML编辑器中打开它。 (你甚至可以使用VS,如果你关闭解决方案并强制它使用XML编辑器打开文件: - )

还有一个构建目标可以调用我当前关闭的AspNetCompiler,但您可以通过MvcBuildViews属性值轻松打开。

  <PropertyGroup>
    <MvcBuildViews>false</MvcBuildViews>
    <DropPath>..\..\drop\</DropPath>
  </PropertyGroup>
  <Target Name="AfterBuildCompiler" Condition="'$(MvcBuildViews)'=='true'">
    <AspNetCompiler VirtualPath="temp" PhysicalPath="$(ProjectDir)" />
  </Target>
  <Target Name="AfterBuild" DependsOnTargets="AfterBuildCompiler">
    <ConvertToAbsolutePath Paths="$(DropPath)">
      <Output TaskParameter="AbsolutePaths" ItemName="FullDropPath" />
    </ConvertToAbsolutePath>
    <Message Importance="High" Text="Binplacing -&gt; @(FullDropPath)" />
    <ItemGroup>
      <Binaries Include="$(OutputPath)**\*.*" />
    </ItemGroup>
    <Copy SkipUnchangedFiles="True" SourceFiles="@(Compile)" DestinationFiles="@(Compile->'$(DropPath)%(Identity)')" />
    <Copy SkipUnchangedFiles="True" SourceFiles="@(Content)" DestinationFiles="@(Content->'$(DropPath)%(Identity)')" />
    <Copy SkipUnchangedFiles="True" SourceFiles="@(EntityDeploy)" DestinationFiles="@(EntityDeploy->'$(DropPath)%(Identity)')" />
    <Copy SkipUnchangedFiles="True" SourceFiles="@(Binaries)" DestinationFiles="@(Binaries->'$(DropPath)%(Identity)')" />
  </Target>

答案 4 :(得分:0)

选项1:从Cruise Control切换到JetBrains TeamCity(你不会后悔的!)。在TeamCity中有一个Artifacts选项......

“工件是由构建生成的文件。完成构建后,TeamCity会根据指定的工件模式在构建的checkout目录中搜索工件。然后将匹配的文件上载到服务器,以供下载。”

选项2:在Cruise Control中创建一个任务,在构建完成后执行XCOPY。

<tasks>
    <msbuild>
       ... here's your main build ...
    </msbuild>

  <exec>
    ... define your XCOPY or other executable task here ...
    <buildTimeoutSeconds>900</buildTimeoutSeconds>
  </exec>

选项3:在您的解决方案中创建一个后期构建项目,并在其中有一个任务来复制文件,在该任务上添加一个仅在巡航控制上运行时触发的条件(各种环境变量启用此功能)。