2009-04-15 14 views
6

AGGIORNAMENTO: tutti questi problemi riguardavano la conversione di un'applicazione Web in un progetto Web in Visual Studio. Una volta ho scavato e ho trovato la soluzione, come ho indicato come risposta di seguito.C#: come convertire un progetto di sito Web in un progetto Web

In sostanza, se si desidera aggiornare/spostare il progetto del sito Web in un progetto Web, si verificheranno una serie di errori. Il breve how-to è nella risposta qui sotto. Grazie a tutti per i commenti e l'aiuto.

vecchia domanda e il titolo è qui sotto:

Come avvolgere namespace xx {} a tutti i file di classe?

In che modo racchiudere lo spazio dei nomi su tutti i file codebehind in un progetto Web (o qualsiasi progetto)?

namespace MyDomain 
{ 
    // regular code here 
} 

farla breve ...

ho Conversione di un progetto che è stato esternalizzato all'estero. Oltre 20.000 file nel solo progetto "web", per un sito web così semplice (scuote la testa). È stato scritto in vs2005 usando VB.NET e C# (sì, entrambe le versioni). Inizialmente era un'applicazione del sito Web. L'ho convertito in un'applicazione Web, principalmente a causa degli 8.000 "temp" assemblaggi prodotti durante la pubblicazione.

Ok, sto convertendo in VS2008. Ho convertito tutto il codice in C#. Sembra buono. Ho portato tutto il codice App_Code/VB e C# speciale in assembly separati.

Ora quando tento di compilare di nuovo, sono avvisato di un numero enorme di errori. Risolvo questi problemi avvolgendo i file codebehind in uno spazio dei nomi e aggiornando il controllo userc per utilizzare il nuovo spazio dei nomi.

Ma ... 5000+ errori da fare ... Aiuto!

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

Forse c'è un altro modo? Ecco un frammento di esempio dal codehind:

public partial class MyHomepage_MyStuff_MyPosts : SecurePage 
{ ... } 

Avviso Il nome della classe MyHomepage_MyStuff_MyPosts. Questo è il percorso della directory nella posizione del file in /MyHomepage/MyStuff/MyPosts.aspx.

L'errore è che il file codebehind non riesce a trovare un riferimento al controllo utilizzato. Come ad esempio:

ctl_website_rpt.RowCount = _totalCount; 

Questo è un controllo (la convenzione di denominazione) chiamato "ctl_website_rpt" all'interno del file ASPX. La pagina aspx ha nell'intestazione:

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

Forse c'è un modo per fare riferimento a questa pagina altrove? Senza cambiarlo nel namespace di?

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" %> 

risposta

4

Fyi, ho trovato la soluzione. È più facile di quanto pensi.

È sufficiente fare clic con il pulsante destro del mouse sul nuovo progetto Web e è disponibile un'opzione per "Converti in applicazione Web"."Questo fa alcune cose interessanti: in primo luogo crea il file generato automaticamente da [file] .aspx.designer.cs. Questo ha eliminato il 99% dei miei errori, perché il codebehind non riusciva a trovare un riferimento al controllo (vedi screenshot nella mia domanda di cui sopra).

Questo anche ri-scrive il <% @ Page%> decleration nel file aspx per ereditare dal codice dietro è il nuovo nome/namespace.

Tutto ciò che è stato lasciato era alcuni problemi di riferimento di montaggio e fatto

The How To è:!

1) Creare un nuovo progetto Web, copiare tutti i file dal vecchio progetto del sito Web al nuovo progetto Web.

2) Correggi tutti i riferimenti ai tuoi assemblaggi che SAPI hai bisogno.

3) Fare clic con il tasto destro del mouse sull'applicazione Web e selezionare Converti in applicazione Web. Ispezionare attentamente l'errore e il registro di allerta. Ricreazione a volontà una volta sistemate le cose.

Se i file aspx o ascx non hanno un file designer.cs, la conversione non è riuscita su quel file. Correggere i riferimenti, lo spazio dei nomi, ecc. E riconvertire.

Suggerimento n. 1: assicurarsi di aver aggiunto tutti i riferimenti prima di eseguire la conversione in applicazione Web. A volte può capitare un numero di errori.

Suggerimento n. 2: Anche se sembra completato, cercare gli errori dopo la conversione. Ti indicherà i file che non è stato in grado di convertire, quindi devi lavorarci sopra.

Suggerimento n. 3: è possibile riconvertire qualsiasi sottodirectory o qualsiasi file, un numero qualsiasi di volte. Supponiamo che tu abbia avuto più errori nella # 2 che stavi lavorando per risolvere il problema, puoi riconvertire il file o la directory più volte finché non lo aggiusti. La riconversione non danneggia l'applicazione esistente.

1

non riesco a pensare ad una soluzione diversa che scrivere una piccola applicazione console che sarebbe passare attraverso tutti i file e modificarli per voi.

+0

Questa è un'idea. Sperando in un'altra soluzione (ha aggiornato la domanda in modo molto più dettagliato). – eduncan911

Problemi correlati