我希望每次构建web asp.net mvc 2项目时都能自动发布到本地文件夹。
我使用的是Visual Studio 2008。
答案 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 -> @(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:在您的解决方案中创建一个后期构建项目,并在其中有一个任务来复制文件,在该任务上添加一个仅在巡航控制上运行时触发的条件(各种环境变量启用此功能)。