6

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

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

一如既往的感谢!

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

更新 2:一旦我发布,我就会收到此错误。Could not load type 'AppNamespace._Default'.

4

4 回答 4

5

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

管理多个配置文件环境

于 2009-02-24T11:40:49.527 回答
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 部署项目所做的部分工作(即为站点编译单个二进制文件)变得多余。

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

于 2009-02-26T20:02:26.623 回答
0

我发现它对我有用。

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

于 2009-02-24T16:30:50.203 回答
0

我已经使用 Web 部署项目成功部署到 IIS6。我首先在部署到 Server 2003 时遇到了问题,但就我而言,这确实是舞台环境的问题。我首先部署到本地 IIS 以检查它是构建问题还是环境问题。我没有使用配置 - 替换。

这是我的构建脚本:

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>
于 2009-03-03T13:24:31.530 回答