有没有人有一个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'.
答案 0 :(得分:5)
我还没有使用我的mvc应用程序设置部署项目,但我一直在使用Scott Hanselman概述的这种技术并且效果很好。
答案 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>