在ASP.NET MVC中使用VS 2008 Web部署项目

时间:2009-02-23 19:11:23

标签: asp.net-mvc web-deployment-project

有没有人有一个Web部署项目来使用ASP.NET MVC?当我打开“已部署”项目时,很多文件都缺少MVC所需要的文件,并且很难用项目中所有丢失的文件发布到服务器。

或者......是否有比Web部署项目更好的方法来修改MVC应用的Web.Config?我在上传之前需要更新差异(SMTP和连接字符串),Web部署项目似乎是正确的方法。

一如既往地谢谢!

更新:我至少缺少global.asax,global.asax.cs和default.aspx.cs。

更新2:发布后,我收到此错误消息。 Could not load type 'AppNamespace._Default'.

4 个答案:

答案 0 :(得分:5)

我还没有使用我的mvc应用程序设置部署项目,但我一直在使用Scott Hanselman概述的这种技术并且效果很好。

Managing Multiple Configuration File Environments

答案 1 :(得分:1)

您列出的3个特定文件都编译为ASP.NET MVC Web项目生成的二进制文件。打开你的.csproj,你会看到:

<Compile Include="Global.asax.cs">
  <DependentUpon>Global.asax</DependentUpon>
</Compile>
<Compile Include="Default.aspx.cs">
  <DependentUpon>Default.aspx</DependentUpon>
  <SubType>ASPXCodeBehind</SubType>
</Compile>

在Reflector等工具中打开二进制文件,您将看到这些类。因此,您无需部署它们。

MVC .csproj中的这些MSBuild步骤呈现Web部署项目所做的部分(即为站点编译单个二进制文件)冗余。

对于令牌替换,您可以保留Deployment项目,也可以将.wdproj文件中的相关MSBuilds步骤复制到.csproj文件中。这不是我做过的事情,但我很快就会尝试自己。

答案 2 :(得分:0)

我发现它适合我。

当你说缺少文件时,你是在谈论System.Web.Mvc文件等吗?您需要在Web应用程序中确保将这些引用设置为在本地进行复制。

答案 3 :(得分:0)

我已使用Web部署项目成功部署到IIS6。 我首先将问题部署到Server 2003,但在我的情况下,它确实是阶段环境的问题。 我首先部署到本地IIS以检查它是否是构建或环境的问题。 我没有使用config - replacement。

这是我的构建脚本:

C:\WINDOWS\Microsoft.NET\Framework\v3.5\MSBuild.exe "D:\Projekte\NiceProjectName\source\NiceProjectName_Build\NiceProjectName_Build.wdproj" /t:Build /p:Configuration=Release 

这是我的wdp:

<Project ToolsVersion="3.5" DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
  <PropertyGroup>
    <Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>
    <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>
    <ProductVersion>9.0.21022</ProductVersion>
    <SchemaVersion>2.0</SchemaVersion>
    <ProjectGuid>{E5E14CEB-0BCD-4203-9A5A-34ABA9C717EA}</ProjectGuid>
    <SourceWebPhysicalPath>..\NiceProjectName</SourceWebPhysicalPath>
    <SourceWebProject>{3E632DB6-6DB3-4BD0-8CCA-12DE67165B48}|NiceProjectName\NiceProjectName.csproj</SourceWebProject>
    <SourceWebVirtualPath>/NiceProjectName.csproj</SourceWebVirtualPath>
    <TargetFrameworkVersion>v3.5</TargetFrameworkVersion>
  </PropertyGroup>
  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">
    <DebugSymbols>true</DebugSymbols>
    <OutputPath>.\Debug</OutputPath>
    <EnableUpdateable>true</EnableUpdateable>
    <UseMerge>true</UseMerge>
    <SingleAssemblyName>NiceProjectName_Build</SingleAssemblyName>
  </PropertyGroup>
  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' ">
    <DebugSymbols>false</DebugSymbols>
    <OutputPath>..\..\deploy</OutputPath>
    <EnableUpdateable>false</EnableUpdateable>
    <UseMerge>true</UseMerge>
    <SingleAssemblyName>NiceProjectName</SingleAssemblyName>
  </PropertyGroup>
  <ItemGroup>
  </ItemGroup>
  <Import Project="$(MSBuildExtensionsPath)\Microsoft\WebDeployment\v9.0\Microsoft.WebDeployment.targets" />
</Project>