2013-02-26 11 views
5

Ich brauche Blend 4, um einige Initialisierungscode aufzurufen, bevor es meine Anwendung vernünftig anzeigen kann, und ich verwende this approach von Josh Smith, um es zu erledigen.Blend ruft nicht DesignTimeBootstrapper

ich die folgende Projektstruktur bin mit:

MainProgram 
    -- Properties 
    -- AssemblyInfo.cs (including the custom attribute) 
    -- App.xaml 
    -- HostWindow.xaml (UserControls are embedded here) 
    -- DesignTimeBootstrapperAttribute.cs 

ViewsAssembly 
    -- Lots of user controls 

Aus irgendeinem Grund wird die Design-Zeit Bootstrap nicht nach jedem Build genannt (was zu meinen benutzerdefinierten Markup Erweiterungen Ausnahmen und viele Fehlermeldungen in Mischung zu werfen) . Es wird jedoch beim ersten Laden der Lösung aufgerufen, und ich verstehe nicht, wie sich Blend hier verhält.

Was mache ich falsch oder gibt es einen anderen Ansatz?

Bearbeiten: Ich habe festgestellt, dass eine vollständige Neuerstellung den Bootstrapper jedes Mal aufrufen. Vielleicht wird das als Workaround funktionieren, aber ich würde es trotzdem gerne verstehen.

+0

Nur wundernd, aber sind Ihre Fehler wie "Fehlermeldung: Kein Konstruktor für den Typ [ClassName] hat 0 Parameter" –

+0

Nein, nicht diese. Ich verwende einen Service Locator in Teilen meines Projekts und muss ihn vor der Verwendung initialisieren. Da die Initialisierung nicht aufgerufen wird, löst sie Ausnahmen aus, wenn Blend versucht, sie zu verwenden. – Jens

Antwort

3

Können Sie überprüfen, dass Sie die Binärdateien der Hauptanwendung der Assembly wirklich nach Neuanpassungen geändert haben, die den Start nicht ausführen? (Ich erwarte, dass Blend die Reflexion nicht bewertet, wenn sich die Binärdateien nicht ändern). Ich würde auch versuchen, die Lösung sauber zu machen und dann zu rebuldieren.

Als eine schwere Umgehungslösung können Sie die Lösung/Projektdatei (z. B. ein Leerzeichen hinzufügen) in einem Post-Build-Ereignis ändern, wodurch Blend die Lösung erneut lädt und Ihren benutzerdefinierten Startcode erneut ausführt.

Als eine Nebenbemerkung, meine Erfahrung mit VS XAML UI Designer-Prozess (xDesProc) zeigt, dass es nicht immer die Änderungen, die ich nach dem Neuaufbau abfangen und ich muss mit Task-Manager zu erzwingen, neu laden, sme kann passiert mit der Mischung.

+0

Vielen Dank für Ihren Vorschlag. Die Zusammenstellung von MainProgram wird mit jedem Build aktualisiert, auch wenn nur ViewsAssembly geändert wird. – Jens

+0

Clen Umbauten klingen wie ein Plan). – Isantipov