Condividi tramite


Procedura: Modificare un sistema del progetto in modo che i progetti caricare nelle versioni di Visual Studio

In Visual Studio 2012, è possibile impedire un progetto creato nel sistema di progetto personalizzato in una versione precedente di Visual Studio, oppure è possibile consentire la identificarti a una successiva nel caso non richieda la correzione, la conversione, ovvero come deprecate.

Nota

In questo contesto, il termine ripristinare significa modificarne il progetto in modo da poter caricare automaticamente la versione di Visual Studio in cui è stato creato o nella versione successiva.La conversione, o aggiornamento, comporta la modifica di un progetto in modo che possa più non venga caricata la versione in cui è stato creato.

contrassegnando un progetto come incompatibile

È possibile contrassegnare un progetto come compatibile con le versioni precedenti di Visual Studio. Ad esempio, si supponga di creare in Visual Studio 2012 un progetto che utilizza una funzionalità di .NET Framework 5. Poiché questo progetto non può essere Visual Studio 2010 SP1 incorporato, è possibile contrassegnarlo come incompatibile con Visual Studio 2010 SP1 in modo che tale versione non tenta di caricarla.

Il componente che aggiunge funzionalità incompatibile è responsabile di contrassegnare il progetto come incompatibile. Il componente deve avere accesso all' interfaccia di IVsHierarchy che rappresenta i progetti di interesse.

Per contrassegnare un progetto come incompatibile

  1. Quando Visual Studio identifica il progetto come incompatibile, viene visualizzata una finestra di dialogo che richiede l'autorizzazione a contrassegnare i progetti specificati come incompatibili. Se acconsentite per contrassegnare i progetti come incompatibili, AskForUserConsentToBreakAssetCompat restituisce S_OK al componente, in caso contrario, restituisce OLE_E_PROMPTSAVECANCELLED.

    Avviso

    In la maggior parte degli scenari, la matrice di IVsHierarchy conterrà un solo elemento.

  2. Se AskForUserConsentToBreakAssetCompat restituisce S_OK, il componente fa o accettare le modifiche che interrompono la compatibilità.

Importante

È necessario implementare la proprietà di VSHPROPID_MinimumDesignTimeCompatVersion per contrassegnare un progetto come compatibile o incompatibile.Ad esempio, se il sistema del progetto utilizza un file di progetto MSBuild, aggiungere al file di progetto una proprietà di compilazione di <MinimumVisualStudioVersion> che dispone di un valore uguale al valore della proprietà corrispondente di VSHPROPID_MinimumDesignTimeCompatVersion .

Rilevare se un progetto è compatibile

I progetti non compatibili con la versione corrente di Visual Studio devono essere caricamento evitata. Inoltre, un progetto che è incompatibile non può essere aggiornato o ripristinato. Di conseguenza, un progetto deve essere controllato due volte la presenza di compatibilità: innanzitutto, quando viene mentre per l'aggiornamento o la correzione e in secondo luogo, prima che venga caricata.

To enable the detection of project incompatibility, you must implement the UpgradeProject_CheckOnly and CreateProject methods. Se un progetto è compatibile, UpgradeProject_CheckOnly deve restituire il codice di esito positivo VS_S_INCOMPATIBLEPROJECT e CreateProject deve restituire il codice di errore VS_E_INCOMPATIBLEPROJECT.

Nota

È possibile memorizzare nella cache l'output del controllo di compatibilità con il metodo di UpgradeProject_CheckOnly in modo da poter utilizzare anche dalla chiamata successiva a CreateProject.

Ad esempio, se i metodi di CreateProject e di UpgradeProject_CheckOnly creati per un sistema di progetto di Visual Studio 2010 SP1 esaminano un file di progetto e ritengono che la proprietà di compilazione di <MinimumVisualStudioVersion> sarà “11,0„, in Visual Studio 2010 SP1 non rilascio il progetto. Inoltre, Strumento di spostamento della soluzione indica che il progetto è “incompatibile„ e non lo rilascio.

Migliorando o ripristino di un progetto

Visual Studio 2010 SP1 possibile convertire la maggior parte dei progetti creati in una versione precedente di Visual Studio. Non è possibile Visual Studio 2012 tale scopo, anche possibile modificare determinati tipi di progetti creati con una versione precedente di in modo che possano caricare e in entrambe le versioni.

Prima che un progetto sia caricato, in Visual Studio viene chiamato il metodo di UpgradeProject_CheckOnly per verificare se il progetto può essere aggiornato. Se il progetto può essere aggiornato, il metodo di UpgradeProject_CheckOnly impostare un flag che comporta una chiamata successiva al metodo di UpgradeProject di aggiornare il progetto. Poiché i progetti incompatibili non possono essere aggiornati, UpgradeProject_CheckOnly necessario innanzitutto verificare la compatibilità di progetto, come descritto nella sezione precedente.

In Visual Studio 2012, è possibile implementare UpgradeProject_CheckOnly per determinare se un progetto può essere ripristinato prima che venga caricato. Se il progetto può essere ripristinato, UpgradeProject_CheckOnly deve restituire il codice di esito positivo VS_S_PROJECTREPAIRONLYUPGRADEREQUIRED. I requisiti possibili di aggiornamento vengono enumerati in VSPUVF_REPAIRFLAGSe includono le seguenti eventualità:

  1. SPUVF_PROJECT_NOREPAIR: Non richiede una correzione.

  2. VSPUVF_PROJECT_SAFEREPAIR: Rende il progetto compatibile con Visual Studio 2010 senza problemi è possibile da gestire che si presentano con le versioni precedenti del prodotto.

  3. VSPUVF_PROJECT_UNSAFEREPAIR: Rende il progetto compatibile con Visual Studio 2010 ma con il rischio di problemi che possono verificarsi con le versioni precedenti del prodotto. Ad esempio, il progetto non è compatibile se dipende dalle versioni diverse di SDK tra Visual Studio 2012 e Visual Studio 2010.

  4. VSPUVF_PROJECT_ONEWAYUPGRADE: Rende il progetto incompatibile con Visual Studio 2010.

  5. VSPUVF_PROJECT_INCOMPATIBLE: indica che Visual Studio 2012 non supporta questo progetto.

  6. VSPUVF_PROJECT_DEPRECATED: Indica che il progetto non è più supportato.

Se un sistema di progetto è condito (ad esempio, un sistema del progetto c# o Visual Basic ha il web, Office (VSTO), Silverlight e altri tipi di progetto compilati in), queste versioni di progetto possono implementare una funzione UpgradeProjectFlavor_CheckOnly dall' interfaccia di IVsProjectFlavorUpgradeViaFactory2 . Per eseguire questo lavoro di funzione, la chiamata precedente del valore indicato implementazione di IVsProjectUpgradeViaFactory4. UpgradeProject_CheckOnly . Si noti che questo è già distribuita in Visual Basic o c# si basa il sistema del progetto.) Gli effetti di questa funzione consente alle versioni di progetto anche per determinare i requisiti di aggiornamento di un progetto, oltre a cui il sistema di progetto di base ha stabilito. La finestra di dialogo di compatibilità viene illustrato il più grave dei due requisiti.

Per le implementazioni gestite, queste due interfacce sono disponibili nell' assembly di [Microsoft.VisualStudio.Shell.Interop.11.0.dll] .

Se i progetti in una soluzione devono essere aggiornati o convertiti, Visual Studio 2012 li elenca in una finestra di dialogo, insieme a tutti i progetti incompatibili. Se si sceglie delle modifiche suggerite, il metodo di UpgradeProject viene chiamato e gli aggiornamenti e le riparazioni vengono fatti. Il metodo di UpgradeProject determina se le modifiche apportate impedirebbero l'esecuzione completa il progetto in una versione precedente di Visual Studio e, in caso affermativo, determina il progetto come incompatibile. Ad esempio, è possibile creare un progetto in Visual Studio 2010 con SP1 e quindi aprire il progetto in Visual Studio 2012. Se un aggiornamento o un ripristino è possibile, verrà visualizzata una finestra di dialogo richiedere l'autorizzazione per apportare modifiche. Se acconsentite, i progetti vengono modificati e quindi vengono caricati. Se si chiude la soluzione e quindi la riapertura in Visual Studio 2010 con SP1, i progetti aggiornati vengono considerati incompatibili e i progetti ripristinati caricano correttamente.