Использование проектов веб-развертывания VS 2008 с ASP.NET MVC
У кого-нибудь есть проект веб-развертывания для работы с ASP.NET MVC? Когда я открываю «развернутый» проект, многие файлы, которые требуются MVC, отсутствуют, что затрудняет публикацию на сервере всех недостающих файлов в проекте.
Или ... Есть ли лучший способ, чем проект веб-развертывания, изменить Web.Config для приложений MVC? У меня есть различия (SMTP и строки подключения), которые необходимо обновить перед загрузкой, и проекты веб-развертывания кажутся правильным методом.
Спасибо как всегда!
Обновление: мне не хватает хотя бы global.asax, global.asax.cs и default.aspx.cs.
Обновление 2: после публикации я получаю эту ошибку. Could not load type 'AppNamespace._Default'.
Ответов (4)4
Все 3 указанных файла скомпилированы в двоичный файл, созданный вашим веб-проектом ASP.NET MVC. Откройте свой .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, и вы увидите классы. Поэтому развертывать их не нужно.
Эти шаги MSBuild в MVC .csproj делают часть того, что делает проект веб-развертывания (т. Е. Компилирует один двоичный файл для сайта), избыточным.
Что касается замены токена, вы можете либо сохранить свой проект развертывания, либо, возможно, скопировать соответствующие шаги MSBuilds из вашего файла .wdproj в файл .csproj. Я не делал этого, но скоро попробую.
Я успешно развернул 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>