2009-04-15 43 views
6

CẬP NHẬT: Tất cả những vấn đề này là để chuyển đổi ứng dụng Trang web thành một Dự án Web trong Visual Studio. Khi tôi đào vào và tôi tìm thấy giải pháp, như tôi đã đánh dấu là câu trả lời dưới đây.C#: Cách chuyển đổi dự án trang web sang một Dự án Web

Về cơ bản, nếu bạn muốn nâng cấp/di chuyển dự án trang web của mình lên một Dự án Web, bạn sẽ gặp phải một số lỗi. Cách thực hiện ngắn gọn trong câu trả lời dưới đây. Cảm ơn tất cả các bạn đã bình luận và giúp đỡ.

Câu hỏi và tiêu đề cũ dưới đây:

Làm cách nào để bọc không gian tên xx {} vào tất cả các tệp lớp?

Làm cách nào bạn bao bọc không gian tên cho tất cả các tệp codebehind trong một dự án web (hoặc bất kỳ dự án nào)?

namespace MyDomain 
{ 
    // regular code here 
} 

dài truyện ngắn ...

Tôi đã được chuyển đổi một dự án đã được gia công ở nước ngoài. Hơn 20.000 tệp trong dự án 'web' một mình, cho một trang web đơn giản như vậy (lắc đầu). Nó được viết bằng vs2005 sử dụng VB.NET và C# (vâng, cả hai đều tuân thủ). Ban đầu nó là một ứng dụng trên Website. Tôi đã chuyển đổi nó thành một ứng dụng Web, chủ yếu là do các hội đồng "8" temp được sản xuất khi bạn xuất bản.

Ok, tôi đang chuyển sang VS2008. Tôi đã chuyển đổi tất cả mã thành C#. Có vẻ tốt. Tôi đã mang tất cả mã App_Code/VB và C# đặc biệt vào các hội đồng riêng biệt.

Bây giờ khi tôi cố gắng biên dịch lại, tôi được cảnh báo về một số lượng lớn các lỗi. Tôi sửa chữa những bằng cách gói các tập tin codebehind trong một không gian tên, và cập nhật usercontrol để sử dụng không gian tên mới.

Nhưng ... 5000 lỗi trở lên ... Trợ giúp!

alt text http://eduncan911.com/blog/thumbnail/4-15-2009.6-00-13.PM.png

Có thể có cách khác? Đây là đoạn mã mẫu từ mã codehind:

public partial class MyHomepage_MyStuff_MyPosts : SecurePage 
{ ... } 

Lưu ý tên lớp MyHomepage_MyStuff_MyPosts. Đây là đường dẫn thư mục đến vị trí của tập tin tại /MyHomepage/MyStuff/MyPosts.aspx.

Lỗi là tệp codebehind không thể tìm thấy tham chiếu đến điều khiển đang được sử dụng. Chẳng hạn như:

ctl_website_rpt.RowCount = _totalCount; 

Đây là điều khiển (quy ước đặt tên) được gọi là "ctl_website_rpt" trong tệp ASPX. Trang aspx có trong tiêu đề:

<%@ Page Title="My Posts" Language="C#" 
    MasterPageFile="~/MasterPages/Main.master" AutoEventWireup="true" 
    CodeFile="MyPosts.aspx.cs" 
    Inherits="MyHomepage_MyStuff_MyPosts" %> 

Có thể tôi có thể tham khảo trang này ở nơi khác? Mà không thay đổi nó vào không gian tên của?

namespace Website.MyHomepage.MyStuff 
{ 
    public partial class MyPosts 
    { ... } 
} 

<%@ Page Title="My Posts" Language="C#" 
    MasterPageFile="~/MasterPages/Main.master" AutoEventWireup="true" 
    CodeFile="MyPosts.aspx.cs" 
    Inherits="Website.MyHomepage.MyStuff.MyPosts" %> 

Trả lời

4

Fyi, tôi đã tìm ra giải pháp. Nó dễ hơn bạn nghĩ.

Bạn chỉ cần nhấp chuột phải vào Dự án web mới của mình và có tùy chọn cho "Chuyển đổi sang ứng dụng web.Đầu tiên, nó tạo ra tệp [file] .aspx.designer.cs được tạo tự động. Điều này đã loại bỏ được 99% lỗi của tôi, vì đó là do codebehind không thể tìm thấy tham chiếu đến điều khiển (xem ảnh chụp màn hình trong câu hỏi của tôi ở trên).

này cũng lại viết những <% @ Page%> decleration trong file aspx của bạn để kế thừa từ các mã đằng sau là tên mới/namespace.

Tất cả những gì còn lại là một số vấn đề tham chiếu lắp ráp và được thực hiện!

Cách thực hiện:

1) Tạo một dự án web mới, sao chép tất cả các tệp từ dự án Trang web cũ của bạn đến Dự án web mới.

2) Khắc phục tất cả các tham chiếu đến các hội đồng của bạn mà bạn BIẾT bạn sẽ cần.

3) Nhấp chuột phải vào Ứng dụng web và chọn Chuyển sang ứng dụng web. Kiểm tra chặt chẽ lỗi và nhật ký cảnh báo. Tái chuyển đổi theo ý muốn khi bạn sửa chữa mọi thứ.

Nếu bất kỳ tệp aspx hoặc ascx nào không có tệp designer.cs, thì chuyển đổi không thành công trên tệp đó. Sửa các tham chiếu, không gian tên, v.v. và chuyển đổi lại.

Mẹo # 1: Đảm bảo bạn đã thêm tất cả các tham chiếu trước khi chuyển đổi sang ứng dụng web. Đôi khi một số lỗi có thể xảy ra.

Mẹo # 2: Mặc dù có vẻ như đã hoàn tất, hãy tìm lỗi sau khi chuyển đổi. Nó sẽ chỉ cho bạn các tập tin nó không thể chuyển đổi, vì vậy bạn cần phải làm việc trên chúng.

Mẹo # 3: Bạn có thể chuyển đổi lại bất kỳ thư mục con nào hoặc bất kỳ tệp nào, bất kỳ số lần nào. Giả sử bạn có nhiều lỗi trong # 2 mà bạn đang khắc phục, bạn có thể chuyển đổi lại tệp hoặc thư mục đó nhiều lần cho đến khi bạn sửa lỗi. Tái chuyển đổi không làm tổn hại đến ứng dụng hiện có.

1

Tôi không thể nghĩ ra giải pháp nào khác ngoài việc viết một ứng dụng bảng điều khiển nhỏ có thể đi qua tất cả các tệp và sửa đổi chúng cho bạn.

+0

Đó là một ý tưởng. Hy vọng về một giải pháp khác (cập nhật các câu hỏi chi tiết hơn rất nhiều). – eduncan911

Các vấn đề liên quan