2010-04-09 2 views
0

J'ai une application Winform qui utilise une bibliothèque tierce de contrôles, DevExpress. J'ai également créé moi-même un tas de contrôles, en étendant ces contrôles. Tout a bien fonctionné quand tout à coup j'ai ouvert VS aujourd'hui et sur la page de conception tous mes contrôles étendus manquaient. J'ai ensuite essayé de reconstruire en vain. Ensuite, j'ai essayé de nettoyer et de reconstruire et je l'ai encore aggravé. Maintenant, j'ai des tonnes (520) de erros indiquant des choses comme ->J'ai Clean Solution'd mon application Winform et maintenant il est cassé

Error 179 The name 'datBirthDate' does not exist in the current context D:\Documents\Visual Studio 2008\Projects\MatrixReloaded\MatrixReloaded\Controls\Member\ucGeneral.cs 339 17 MatrixReloaded

aussi si je tente d'ouvrir un contrôle de formulaire ou de l'utilisateur en mode Design J'obtiens d'abord ceci ->

could not find type, "MyType" please make sure that the assembly that contains this type is referenced

puis, si je clique sur Ignore et continuer ce que je reçois pour toutes les formes et CONTROS quand je tente de les regarde en mode design -> Exception of type System.OutOfMemoryException was thrown

aide!?!? Quand j'ai cherché sur google, je suis tombé sur des références à VS 2003 ... Je suis sur 2008 sp1.

Voici un exemple de mes contrôles étendus. Rien d'extraordinaire. Je fais cela pour presque tous les contrôles. Tous sont dans leur propre classe mais dans ce même fichier, MyExtendedControls.cs, qui réside dans le même projet que l'application WinForm.

using System.ComponentModel; 
using System.Drawing; 
using System.Windows.Forms; 

using DevExpress.XtraEditors; 

public class MyTextBox : TextEdit 
{ 
    private bool _isRequired; 
    /// <summary> 
    /// Used to determine if this is a required field 
    /// </summary> 
    [Description("Is this a required control")] 
    public bool isRequired 
    { 
     get 
     { 
      return _isRequired; 
     } 
     set 
     { 
      _isRequired = value; 
     } 
    } 

    private bool _isChanged; 
    /// <summary> 
    /// Used to determine if this field's data has changed 
    /// </summary> 
    [Description("RUNTIME: This fields data has changed")] 
    public bool isChanged 
    { 
     get 
     { 
      return _isChanged; 
     } 
     set 
     { 
      _isChanged = value; 
     } 
    } 

Répondre

1

choses à vérifier ...

1) Espérons que vous n'avez pas ajouter les DLL de tiers dans votre répertoire bin ... le nettoyage de votre solution vide le répertoire bin!

2) Vérifiez les références du projet - y a-t-il des points d'exclamation? Si c'est le cas, vous devrez les référencer de nouveau. La plupart des autres erreurs que vous obtenez sont peut-être dues au fait que vos autres assemblys (comme celui contenant "MyType" ne sont pas en construction.) Si vous pouvez déterminer l'ordre logique et fixer la dépendance la plus faible, la plupart des autres les problèmes vont disparaître.

par exemple ...

projet A références du projet B, qui contient « MyType » références du projet B tiers projet A tiers du projet Un manque pour une raison quelconque ...

Le projet A crachera toutes les erreurs sur place car aucune DLL ne peut être créée pour le projet B car elle ne se construit pas. En corrigeant simplement le problème de référence dans le projet B, toutes les erreurs disparaîtront.

Espérons que cela aide.

+0

Merci pour la direction ... En réponse, Non, le chemin de la DLL ne se trouve pas dans le répertoire Bin, bien que Copy Local ait la valeur true. Je ne vois aucune exclamation dans mes références. Je comprends ce que vous dites à la fin, mais je ne suis pas sûr de savoir comment procéder car ce n'est qu'un projet. Comme je l'ai dit, les classes de contrôles étendus sont dans ce même projet. –

Questions connexes