2016-08-03 1 views
1

Je sais que si vous utilisez Visual Studio, si vous supprimez le fichier composite.generated.dll, il peut reconstruire et créer un nouveau fichier, mais si ce fichier en production est supprimé pour une raison quelconque, peut-il reconstruire. J'ai fait quelques tests et je suis arrivé à la supposition qu'il ne peut pas, mais je voulais juste m'assurer que je ne manque pas quelque chose qui peut être fait pour terminer la reconstruction du fichier composite.genereated.dll dans la corbeille t existe.Est-ce que composite.generated.dll peut se reconstruire complètement s'il est inexistant?

+0

pouvez-vous marquer la réponse comme correcte si elle a été utile à votre question. –

+0

Merci beaucoup. A aidé un peu. Nous avons quelques environnements dans lesquels nous évoluons et que nous gardons tous les mêmes afin que nous puissions déplacer des sites sans causer de problèmes a été un problème sur lequel nous travaillons encore. Principalement lorsque des types de données en composite sont ajoutés et modifiés dans chaque environnement et provoquent des problèmes avec GUIDS ne correspondent pas. – FewestKitten896

Répondre

1

TL; DR

Assurez-vous de ne pas avoir une dynamique Datatypes, et si vous le faites, assurez-vous qu'aucun code dans votre App_Code fait référence à vos types dynamiques.

Version longue

Composite.Generated.dll contient des classes d'application tous vos types de données/interfaces qui sont compilées dynamiquement lors de l'exécution pour cibler les DataProvider qui containst les données pour un type. Lorsque vous travaillez avec des types statiques, c'est-à-dire des fichiers d'interface créés dans votre solution, tout votre code les référencera et il n'y a aucune référence à Composite.Generated.dll à aucun moment et votre site Web est libre de démarrer et Composite peut aller de l'avant et recompiler le Composite.Generated.dll s'il est manquant ou périmé. Lorsque vous travaillez avec des types dynamiques, vous ne créez aucun fichier d'interface mais créez le type à l'aide de l'éditeur de CMS. Ce qui se passe dans les coulisses est que Composite va créer une interface pour vous et l'ajouter à Composite.Generated.dll, ce qui permet au code dans App_Code de découvrir et de référencer cette interface. Le problème est maintenant que vous avez une dépendance cyclique; Dans le cas où vous supprimez Composite.Generated.dll le site ne peut pas démarrer, car il essaiera d'abord de compiler tout le code dans App_Code, ce qui échouera car il fait référence à une interface qui n'existe plus. Et à cause de cela, Composite ne peut pas démarrer et re-compiler Composite.Generated.dll - un problème classique de poulet et d'oeuf. Je corrige ce scénario pour déplacer tous les fichiers de App_Code, ce qui permettra au site Web de démarrer, Composite peut recompiler le fichier Composite.Generated.dll et vous pouvez déplacer les fichiers à App_Code.

Une solution plus robuste consiste simplement à oublier les types dynamiques en production. C'est génial pour le prototypage rapide pendant le développement, mais donne trop de maux de tête sur les sites de production.