2016-08-03 10 views
1

Ich weiß, wenn Sie Visual Studio verwenden, wenn Sie die composite.generated.dll entfernen, kann es neu erstellen und eine neue Datei erstellen, aber wenn diese Datei in der Produktion aus irgendeinem Grund entfernt wird, kann es neu erstellen. Ich habe einige Tests durchgeführt und bin zu der Annahme gelangt, dass es nicht möglich ist, aber ich wollte nur sicherstellen, dass ich nicht etwas verpasse, das getan werden kann, um die composite.gene_ready.dll im Bin wieder aufzubauen, wenn für eine Chance es nicht war t existieren.Kann composite.generated.dll die Wiederherstellung selbst durchführen, wenn sie nicht existiert?

+0

können Sie die Antwort bitte als richtig markieren, wenn sie für Ihre Frage hilfreich war. –

+0

Vielen Dank. Hat mir ziemlich geholfen. Wir haben einige Umgebungen, in denen wir entwickeln und alles so halten, dass wir Websites verschieben können, ohne Probleme zu verursachen. Dies ist ein Problem, an dem wir noch arbeiten. Hauptsächlich, wenn Datentypen in Composite in jeder Umgebung hinzugefügt und geändert werden und Probleme mit nicht übereinstimmenden GUIDS verursacht werden. – FewestKitten896

Antwort

1

TL; DR

Achten Sie darauf, keine dynamischen Datentypen haben, und wenn Sie das tun, stellen Sie sicher, dass kein Code in App_Code ist Ihre dynamischen Typen verweisen.

Lange Version

Composite.Generated.dll enthält Klassen Umsetzung alle Datentypen/Schnittstellen, die zur Laufzeit dynamisch erstellt werden, um die Datenprovider zum Ziel, die die Daten für einen Typ containst.

Wenn Sie mit statischen Typen arbeiten, also mit Schnittstellendateien, die in Ihrer Lösung erstellt wurden, verweist Ihr gesamter Code auf sie und es gibt keinen Verweis auf Composite.Generated.dll an irgendeinem Punkt, und Ihre Website kann gestartet werden und Composite kann fortfahren und Composite.Generated.dll neu compilieren, wenn es fehlt oder veraltet ist.

Beim Arbeiten mit dynamischen Typen erstellen Sie keine Schnittstellendatei, sondern erstellen den Typ mit dem CMS-Editor. Was hinter den Kulissen geschieht, ist, dass Composite ein Interface für Sie erstellt und es zu Composite.Generated.dll hinzufügt, das Code in App_Code ermöglicht, diese Schnittstelle zu erkennen und darauf zu verweisen. Das Problem besteht nun darin, dass Sie eine zyklische Abhängigkeit haben. Falls Sie Composite.Generated.dll löschen, kann die Website nicht starten, da sie automatisch zuerst versucht, den gesamten Code in App_Code zu kompilieren, was fehlschlagen wird, da sie auf eine Schnittstelle verweist, die nicht mehr existiert. Daher kann Composite Composite.Generated.dll nicht gestartet und neu kompiliert werden - ein klassisches Henne-Ei-Problem.

Ich quick-fix für dieses Szenario ist es, alle Dateien aus App_Code zu verschieben, die die Website starten können, Composite kann die Composite.Generated.dll-Datei neu kompilieren und Sie können die Dateien zurück nach App_Code verschieben.

Eine robustere Lösung ist, dynamische Typen in der Produktion einfach zu vergessen. Es eignet sich hervorragend für das schnelle Prototyping während der Entwicklung, verursacht jedoch zu viele Probleme auf den Produktionsstandorten.

Verwandte Themen