2008-09-18 6 views
7

Cherchait des approches pour convertir de façon incrémentielle un grand projet ASP.NET VB.NET en C# tout en étant capable de le déployer comme une seule application web (actuellement déployée sur une base hebdomadaire). Mes pensées étaient simplement de créer un nouveau projet C# ASP.NET et de déplacer lentement les pages, mais je n'ai jamais essayé de le faire et de le fusionner d'une manière ou d'une autre avec un autre projet ASP.NET pendant le déploiement.Conversion d'un grand projet ASP.NET VB.NET en C# - de manière incrémentielle?

(Précision: Les grands projets de VB.NET ASP.NET sont des chiens absolus dans le VS IDE ...)

Toute pensée?

+0

vous n'avez pas tagué votre question. – chrissie1

+0

vraiment? Je vois 4 tags sur la droite que je l'ai tagué quand j'ai créé la question ... C#, asp.net, vb.net, conversion – Joey

+0

chrissie1: Les tags sont dans la gauche maintenant (je ne sais pas pourquoi le changement) –

Répondre

3

A comme pour le port comme je le prends? Je ne vois pas vraiment le point et ce que vous allez gagner pour tous les efforts. Peut-être écrire de nouvelles fonctionnalités ou refactoriser des couches logiques/de service léthargiques/mauvaises en C# mais comme pour les pages web, je ne vois pas le bénéfice 80/20.

+0

A droite, nous refactorisons et déplaçons le code vers les présentateurs, les services, etc. Mais si vous avez déjà travaillé dans l'IDE VS avec un grand projet ASP.NET VB.NET avant, vous savoir combien VB.NET tue l'IDE. Nous cherchons donc une solution à court terme pour surmonter l'obstacle VB.NET. – Joey

+0

Salut, non Je n'ai jamais travaillé avec une solution vb.net, mais je ne vois pas comment une réécriture en C# est une solution à court terme si le site est grand. – redsquare

+0

Merci pour la réponse. Je ne parle pas d'une réécriture. Je peux utiliser SharpDevelop pour la conversion réelle une page à la fois. Je m'interrogeais davantage sur la partie incrémentale en ce qui concerne la fusion de deux projets Web asp.net à déployer en un seul. Merci! – Joey

0

Cela peut être fait. Eh bien, j'espère que cela peut être fait car je le fais petit à petit sur une application ASP.net héritée. Vous pouvez simplement changer plus de 1 Webform à la fois. Où vous pouvez lutter est que je ne peux pas sembler avoir des langues mélangées dans le dossier du code de l'application car ils sont compilés ensemble.

1

Conserver l'ancien contenu dans VB. Tous les nouveaux trucs en C#. La transition peut être lente mais vous ne perdrez pas de temps. Pendant le temps libre, changez les choses en C#.

5

Commencez par la logique métier et travaillez sur les pages. Encapsuler tout ce que vous pouvez dans les bibliothèques C# que vous pouvez ajouter comme références au site VB.NET. Une fois que vous avez transféré tous vos backends et que vous les avez testés, vous pouvez commencer à faire des pages individuelles, mais je vous suggère de ne pas les déployer avant d'avoir terminé toute la conversion.

+0

Merci. C'est à peu près l'approche que nous avons adoptée jusqu'à maintenant. Mais étant donné que nous faisons des mises en production hebdomadaires, je ne suis pas sûr que la partie «attendez que tout soit terminé avant de déployer» fonctionnerait trop bien pour nous. – Joey

1

Je l'ai fait avec un projet en procédant comme suit:

  1. Créer une bibliothèque de classes C#
  2. Référence de la bibliothèque de classes C# de l'application Web VB
  3. Créer le code derrière classe dans le répertoire C# bibliothèque
  4. Mise à jour
  5. la propriété « Hérite » dans le fichier ASPX/ascx pour faire référence à la classe C# (ce fichier existe encore dans le projet initial VB)

Cela a fonctionné plutôt bien; C'est parfois un peu pénible de devoir parcourir plusieurs projets pour voir une seule page/un seul contrôle, mais cela m'a permis de faire ce que vous vouliez faire.

1

Vous pouvez simplement créer un nouveau projet de bibliothèque de classe C# dans la solution. recoder quelques classes à la fois ici et ensuite remplacer les classes vb dans le projet principal.

mais pour être honnête, je suis d'accord, je ne vois pas l'avantage à moins que vous essayez d'apprendre C# ou juste vraiment ne pas aimer vb ou simplement s'ennuyer.

4

Vous êtes autorisé à conserver votre répertoire App_Code contenant à la fois le code VB et le code C#. Donc, efficacement, vous pouvez le faire très lentement lorsque vous avez le temps de le convertir. J'ai actuellement le code VB.Net et C# dans mon répertoire App_Code et pendant mon temps libre je convertis en code VB.Net ou chaque fois que je dois revenir à une page avec VB.Net et mess avec lui je le convertis en C#. Easy Peasy et Microsoft l'ont rendu encore plus agréable quand ils vous ont permis d'avoir à la fois VB.NET et C# sur la même application. C'était l'une des meilleures idées qu'ils auraient pu mettre en œuvre dans l'ensemble du processus de création d'applications.

Si vous souhaitez ajouter les répertoires de code dans votre répertoire un ajouter à votre web.config

<compilation> 
<codeSubDirectories> 
    <add directoryName="VB_Code"/> 
    <add directoryName="CS_Code"/> 
</codeSubDirectories> 
</compilation> 

Et puis ajoutez un dossier nommé VB_Code et un autre dossier CS_Code nommé dans votre répertoire App_Code. Puis jetez tout votre code vb/C# dans vos dossiers et votre bien.

0

Si vous avez 179 $, vous avez terminé.

Bien sûr, il y a des convertisseurs freeware disponibles.

+0

Merci, mais la conversion elle-même n'est pas vraiment le problème. Devinez mon titre de la question n'était pas tout à fait clair. C'est la partie "incrémentielle" de la conversion qui concerne la fusion/le déploiement du projet web, qui était vraiment ce que je me demandais. – Joey

1

J'ai eu du succès en tirant dans dll des projets vb avec Reflector (il est gratuit) et l'affichage du code en C#. Les variables locales ne sont pas toujours traduites, mais vous pouvez comparer les tâches de traduction et de refactorisation au fur et à mesure.

1

essayez #Develop. Je pense que c'est la meilleure façon de convertir n'importe quel réseau .net pris en charge à toutes les langues .net suppported.

D'autres outils convertissent uniquement le code, mais cela convertit l'ensemble du projet.