2009-04-17 6 views
9

Ich aktualisiere ein Projekt von Visual Studio 2003 nach 2008 und möchte automatisch XXX.Designer.cs Dateien generieren und die entsprechende XXX.cs Original aktualisieren.Wie konvertiert man VS2003-Klassen automatisch in partielle Designer.cs-Dateien?

Jeder automatische Weg, es zu tun?

UPDATE: Ich beziehe mich auf WinForms. Natürlich weiß ich, dass der alte Stil funktioniert, aber ich suche nach einem Weg, um zu dem neuen Stil zu gelangen, ohne es von Hand zu machen.

+0

Ich sehe nicht, wo Sie gesagt, ob dies ein ASP.NET-Projekt oder ein Windows Forms-Projekt ist. Bitte geben Sie an, welche. –

+2

Weitere Antworten finden Sie unter http://stackoverflow.com/questions/669540/split-old-net-code-into-designer-partial-class – reinierpost

Antwort

0

Ich bin mir nicht sicher, ob ich das verstehe, aber ich rate mal.

War dies ein ASP.NET-Projekt in VS2003? Hatte es .Designer.cs Dateien drin? Ist es der Fall, dass Sie ein Upgrade durchgeführt haben, aber Sie feststellen, dass Sie jetzt keine .Designer.cs-Dateien haben?

Wenn ja - Sie haben möglicherweise versehentlich Ihr Webanwendungsprojekt in eine Website "Projekt" geändert. Diese Art von "Projekt" wurde in VS2005 eingeführt, also hätten Sie es noch nicht gesehen. Dies sind keine realen Projekte (keine .csproj-Datei), und sie haben viele andere Unterschiede.

Andernfalls, wenn Ihr Projekt .Designer.cs Dateien nicht genutzt haben, dann warum willst du sie jetzt?

Im Allgemeinen ist die Art und Weise Designer-Dateien zu erstellen, ist die Datei in einem Designer zu öffnen, ein paar Minuten Zeit für den Designer warten zu beenden, was er tut (die Aktualisierung des Bildschirms usw.); und dann speichern Sie die Datei. Möglicherweise müssen Sie das Original "anfassen", damit der Designer die Dinge neu bewerten kann.

+2

VS2003 hatte keine .designer.cs-Dateien, weil .net 1.1 nicht unterstützen partielle Klassen. Es werden also nur Steuerdeklarationen innerhalb einer Region im Codebehind versteckt. FerranB bittet um eine automatische Möglichkeit, diese Deklarationen in eine Designer-Datei zu verschieben. –

+0

Es ist so lange her, dass ich VS2003 verwendet habe, die ich vergessen hatte! In diesem Fall öffnen Sie den Designer, und das Speichern erfolgt dann manuell. Es gibt möglicherweise eine Möglichkeit, dies zu automatisieren, entweder über Makros oder eine stärkere VS-Erweiterbarkeit. Makros werden es wahrscheinlich tun. –

+0

Nein, weder VS2005 noch VS2008 verschiebt Dateien automatisch in .designer-Dateien, nur durch Öffnen und Speichern. –

1

Die ursprünglichen Klassen funktionieren weiterhin - sogar mit dem Visual Studio Designer. Der Code, den VS in den Designer-Klassen steckt, soll lediglich das "Rauschen" des Entwicklers in eine separate Datei entfernen, damit Sie sich auf den nicht-visuellen Code in Ihrer Klasse konzentrieren können.

Nachdem Sie das Projekt zu VS2008 mit den Assistenten migrieren, können Sie Ihre Formulare in VS öffnen und sie auch weiterhin nur bearbeiten wie zuvor. Alle neuen Formulare, die Sie erstellen, erhalten Designer-Backer-Dateien.

1

Wir hatten dieses Problem.

Grundsätzlich ist die Designer-Datei sollte nichts anderes als einen Satz von Objektdeklarationen (das heißt, die Objekte auf dem Formular) und die InitializeComponent() Aufruf enthält. Wenn Sie irgendeine schicke Arbeit an Ihrem Konstruktor erledigt haben, die vielleicht auch da ist.

Erstellen Sie einfach eine Datei namens MyForm.Designer.cs und fügen Sie sie dem Projekt hinzu. VS2008 wird es automatisch unter MyForm.cs platzieren. Wenn Sie von dort aus die partielle Klassenüberschrift und den Namespace erstellen und dann alle Deklarationen und den Aufruf Initializecomponent in die Designerdatei kopieren, funktioniert es.

Aber, wenn Sie mussten, würden Menschen initializecomponent bearbeiten und auch den Standardkonstruktor bearbeiten, VS2005 und 2008 konnten diese Dateien nicht automatisch aktualisieren, da alle Arten von seltsamen Dingen auftreten können. Ich schätze aus Sicht des Projekts, welchen Nutzen Ihrer Meinung nach Ihr Arbeitscode aus der Trennung haben wird?

3

Da ist ein Makro da draußen schweben, dass dies tut. Ich habe es benutzt und es funktioniert großartig. Beginnen Sie mit Blick auf Nathan Jones Blog. Wenn Sie nicht viel Glück haben, dann laden Sie eine Zip der Makro-Quelle (ich gepostet) von VSCONVERT - PasteBin

+0

Link abgelaufen in fileFactory. – Matthieu

+0

Ok, Quellcode in Pastebin geändert. Ich habe dieses Makro seit 2006, 2008 Zeitrahmen nicht verwendet. – ja72