2009-02-23 37 views
6

Có ai có dự án triển khai Web để làm việc với ASP.NET MVC không? Khi tôi mở dự án "triển khai", rất nhiều tệp bị thiếu mà MVC yêu cầu và làm cho nó khó khăn để Xuất bản lên máy chủ với tất cả các tệp bị thiếu trong dự án.Sử dụng các dự án triển khai web VS 2008 với ASP.NET MVC

Hoặc ... Có cách nào tốt hơn dự án triển khai Web để sửa đổi Web.Config cho ứng dụng MVC không? Tôi có sự khác biệt (SMTP và chuỗi kết nối) cần được cập nhật trước khi tải lên và các dự án triển khai web dường như là phương pháp đúng.

Cảm ơn mọi người!

Cập nhật: Tôi thiếu ít nhất global.asax, global.asax.cs và default.aspx.cs.

Cập nhật 2: Khi tôi xuất bản, tôi gặp phải lỗi này. Could not load type 'AppNamespace._Default'.

+0

gì file bị thiếu? Tôi vừa chạy thử nghiệm và không thấy bất kỳ sự cố nào –

+0

Tệp C# của tôi như global.asax.cs. Có thể nó thất bại? –

+0

Tôi biết nó biên dịch nó, nhưng một số nó không có và dự án xuất ra có các tập tin với lời tuyên bố màu vàng. –

Trả lời

5

Tôi chưa thiết lập dự án Triển khai nào với ứng dụng mvc của mình nhưng tôi đã sử dụng kỹ thuật này do Scott Hanselman vạch ra và nó hoạt động rất tốt.

Managing Multiple Configuration File Environments

+0

Cảm ơn. Điều này làm việc với một số hack. –

0

Tôi thấy nó hoạt động cho tôi.

Khi bạn nói có các tệp bị thiếu, bạn có đang nói về tệp System.Web.Mvc không? Bạn cần đảm bảo trong ứng dụng web của mình rằng các tham chiếu này được đặt để sao chép cục bộ.

1

3 tệp cụ thể bạn đã liệt kê đều được biên dịch thành nhị phân được tạo bởi dự án web ASP.NET MVC của bạn. Mở tệp .csproj của bạn và bạn sẽ thấy:

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

Mở tệp nhị phân của bạn trong công cụ như Reflector và bạn sẽ thấy các lớp. Do đó bạn không cần triển khai chúng.

Các bước MSBuild này trong MVC .csproj hiển thị phần về những gì Dự án triển khai web thực hiện (nghĩa là biên dịch một nhị phân đơn cho trang web) dự phòng.

Để thay thế mã thông báo, bạn có thể giữ dự án Triển khai hoặc có thể sao chép các bước MSBuilds có liên quan từ tệp .wdproj của bạn vào tệp .csproj của bạn. Đây không phải là điều tôi đã làm, nhưng không lâu để thử bản thân mình.

0

Tôi đã triển khai thành công đến IIS6 bằng cách sử dụng Dự án triển khai web. Tôi đã gặp vấn đề khi triển khai Server 2003 trước, nhưng trong trường hợp của tôi, nó thực sự là một vấn đề của môi trường giai đoạn. Lần đầu tiên tôi triển khai một IIS cục bộ để kiểm tra xem đó có phải là vấn đề về xây dựng hay môi trường không. Tôi không sử dụng cấu hình - thay thế.

Đây là build của tôi kịch bản:

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

Dưới đây là WDP tôi:

<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> 
Các vấn đề liên quan