首页 文章

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

提问于
浏览
23

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

我使用Visual Studio 2008 .

5 回答

  • 7

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

  • 2

    那么你可以在一个构建后的事件中做到with MSBuild .

    但你确定要这么做吗?它会让你慢下来,你可能不需要为每个版本发布?为什么不在IIS而不是Cassini中运行该站点 .

  • 0

    步骤1.确保您有一个Web项目 .

    步骤2.转到视图 - >工具栏 - > Web一键发布 .

    工具栏上的发布按钮Web按钮将按您的要求执行...一步构建和发布 .

  • 13

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

    此外,您无法从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>
    
  • 5

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

相关问题