Visualizzazione dei risultati da 1 a 8 su 8
  1. #1

    VS AddIn

    Salve a tutti.

    Stavo creando un addIn di VisualStudio: una nuova voce nel menu SolutionExplorer che consente di creare dinamicamente una classe .cs ed aggiungerla al processo corrente.

    Mi va sempre in errore: vorrei capire se è un errore applicativo o perchè magari in debug (o quant'altro) una cosa del genere non funziona...

    Il metodo che uso è questo:

    codice:
    internal String GenerateProxy(DTE ApplicationObject, Configurazione Config, ProgressBar Avanzamento)
    		{
    			try
    			{
    				ProjectComponentsManager projMan = new ProjectComponentsManager();
    
                                                                    // metodo che crea il codice da aggiugere al file .cs
    				String Code = GetAppDataProcessCode(Config);
    
    				if (Code != null || Code != String.Empty)
    				{
                                                                                     // metodo che crea il nome della classe
    					string NomeClasse = GetClassNameFromCodeString(Code);
    
                                                                                    // *** QUI VA IN ERRORE ***
    					System.Array solutionProjects = ApplicationObject.DTE.ActiveSolutionProjects as System.Array;
    					Project project = (Project)solutionProjects.GetValue(0);
    
    					projMan.AddClassToProject(project, Code, NomeClasse);
    
    					AvanzaProgressBar(Avanzamento, 20);
    
    					[..]
    		}
    Va in errore alla riga:
    System.Array solutionProjects = ApplicationObject.DTE.ActiveSolutionProjects as System.Array;

    con il più classico dei: "Object reference not set to an instance of an object".

    E' la prima volta che smandruppo con gli AddIn e con la classe DTE...
    Qualcuno può aiutarmi?

    Grazie!

  2. #2
    Utente di HTML.it L'avatar di Stoicenko
    Registrato dal
    Feb 2004
    Messaggi
    2,254
    ti sconsiglio in c# di usare la parola "as" per fare i cast.. usa il cast classico gestendo le eventuali eccezioni..

  3. #3
    Utente di HTML.it L'avatar di Stoicenko
    Registrato dal
    Feb 2004
    Messaggi
    2,254
    e ti consiglio di fare del debug perchè è probabile che uno tra ApplicationObject e DTE potrebbero essere null

  4. #4
    Infatti è così!

    Come la fava faccio girare questo AddIn direttamente dal processo corrente...

    Devo quindi registrarlo, altrimenti ci sbatto la testa per sempre

    Qualcuno sa come registrare questo AddIn?

    Grazie ancora

  5. #5
    risolto, grazie


  6. #6
    Utente di HTML.it L'avatar di U235
    Registrato dal
    Mar 2006
    Messaggi
    1,539
    Originariamente inviato da liveforever
    risolto, grazie

    come hai risolto poi?

  7. #7
    Ciao!

    Effettivamente l'errore era perchè l'applicationObject era vuoto: questo perchè non potevo provare l'AddIn dallo stesso progetto

    Ho quindi registrato la dll da console:

    regasm *nomedll*

    messo in GAC e creato un nuovo progetto di prova in VS: a quel punto funziona tutto bene!


  8. #8
    Utente di HTML.it L'avatar di U235
    Registrato dal
    Mar 2006
    Messaggi
    1,539
    Grazie.


Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2026 vBulletin Solutions, Inc. All rights reserved.