2009-02-23 1 views
6

Кто-нибудь получил проект веб-развертывания для работы с ASP.NET MVC? Когда я открываю «развернутый» проект, многие файлы отсутствуют, что требует MVC, и затрудняет публикацию на сервере всех недостающих файлов в проекте.Использование проектов развертывания VS 2008 с ASP.NET MVC

Или ... Есть ли лучший способ, чем проект веб-развертывания для изменения Web.Config для приложений MVC? У меня есть различия (SMTP и строки подключения), которые необходимо обновить до того, как загрузка и проекты веб-развертывания выглядят правильно.

Спасибо, как всегда!

Обновление: У меня отсутствует хотя бы global.asax, global.asax.cs и default.aspx.cs.

Обновление 2: После публикации, я получаю эту ошибку. Could not load type 'AppNamespace._Default'.

+0

Какие файлы не хватает? Я просто проверил тест и не видел никаких проблем. –

+0

Мои файлы C#, такие как global.asax.cs. Может, это провалилось? –

+0

Я знаю, что он скомпилирует его, но некоторые его не имеют, и у проекта есть файлы с желтым восклицанием. –

ответ

5

Я еще не создал проект развертывания с моим приложением mvc, но я использовал этот метод, описанный Скоттом Гензельмом, и он отлично работает.

Managing Multiple Configuration File Environments

+0

Спасибо. Это сработало с некоторыми взломами. –

0

Я нашел, что это работает для меня.

Когда вы говорите, что файлы отсутствуют, вы говорите о файлах System.Web.Mvc и тому подобное? Вы должны убедиться, что в своем веб-приложении эти ссылки настроены для копирования локально.

1

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> 

Откройте ваш бинарный файл в инструменте, такие как отражатель, и вы будете видеть классы. Поэтому их развертывание не требуется.

Эти шаги MSBuild в MVC .csproj визуализируют часть того, что делает проект веб-развертывания (т. Е. Компилирует единый двоичный файл для сайта) избыточным.

Что касается замены токенов, вы можете либо сохранить проект развертывания, либо, возможно, скопировать соответствующие шаги MSBuilds из вашего .wdproj-файла в ваш .csproj-файл. Это не то, что я сделал, но я скоро попытаюсь.

0

Я успешно применил IIS6 с помощью проекта Web Deployment Project. У меня были проблемы с развертыванием на 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>