2013-04-02 15 views
17

Ho un progetto C# che sto creando in VS 2010. Fa riferimento a un progetto C++ tramite COM, che è anche una parte della soluzione. Venerdì scorso, ho creato una build di successo, cambiato una singola riga di codice, fatto un'altra build e ho iniziato a ricevere un errore su .NET.La versione di destinazione di .NET Framework non corrisponde alla condizione di avvio

La versione di destinazione di .NET Framework nel progetto non corrisponde alla versione della condizione di avvio di .NET Framework ".NET Framework 3.5". Aggiornare la versione della condizione di avvio di .NET Framework in modo che corrisponda alla versione di destinazione di .NET Framework nella finestra di dialogo Opzioni di compilazione avanzate (VB) o nella pagina dell'applicazione (C#, F #).

  • Progetto -> Proprietà -> Applicazioni -> Target quadro (per ogni progetto sia in Debug e Release)
  • Progetto -> Proprietà -> Pubblica -> Prerequisiti (confermato .NET 3.5 e Windows Installer 3.1)
  • Setup -> condizioni di avvio -> .NET Framework
  • Setup -> Proprietà -> Prerequisiti

ho anche rivisto il codice vdproj per il mio programma di installazione, confermando le condizioni di lancio erano .NET 3.5:

"ComponentsUrl" = "8:" 
"Items" 
{ 
    "{EDC2488A-8267-493A-A98E-7D9C3B36CDF3}:Microsoft.Net.Framework.3.5.SP1" 
    { 
     "Name" = "8:.NET Framework 3.5 SP1" 
     "ProductCode" = "8:Microsoft.Net.Framework.3.5.SP1" 
    } 
    "{EDC2488A-8267-493A-A98E-7D9C3B36CDF3}:Microsoft.Windows.Installer.3.1" 
    { 
     "Name" = "8:Windows Installer 3.1" 
     "ProductCode" = "8:Microsoft.Windows.Installer.3.1" 
    } 
} 

"ComponentsUrl" = "8:" 
"Items" 
{ 
    "{EDC2488A-8267-493A-A98E-7D9C3B36CDF3}:Microsoft.Net.Framework.3.5.SP1" 
    { 
     "Name" = "8:.NET Framework 3.5 SP1" 
     "ProductCode" = "8:Microsoft.Net.Framework.3.5.SP1" 
    } 
    "{EDC2488A-8267-493A-A98E-7D9C3B36CDF3}:Microsoft.Windows.Installer.3.1" 
    { 
     "Name" = "8:Windows Installer 3.1" 
     "ProductCode" = "8:Microsoft.Windows.Installer.3.1" 
    } 
} 

"LaunchCondition" 
{ 
    "{A06ECF26-33A3-4562-8140-9B0E340D4F24}:_799EF2A78D074B669D0B30310FD56A67" 
    { 
     "Name" = "8:.NET Framework" 
     "Message" = "8:[VSDNETMSG]" 
     "FrameworkVersion" = "8:.NETFramework,Version=v3.5" 
     "AllowLaterVersions" = "11:FALSE" 
     "InstallUrl" = "8:http://go.microsoft.com/fwlink/?LinkId=131000" 
    } 
} 

Da quando compongo sia un compilatore x86 che x64, ho due progetti di installazione. Il secondo, per il processore x86, non ottiene l'errore .NET. Ho confrontato il codice nel suo vdproj con questo, e sembra lo stesso.

Ho trovato diversi thread su questo problema, incluso uno molto buono here, ma nessuno di loro mi ha aiutato a risolvere questo problema. Qualsiasi suggerimento sarebbe utile.

EDIT

ho cambiato tutto per NET 4.0 solo per vedere se ha fatto la differenza, e il progetto costruito con successo. L'ho cambiato e mi ha restituito l'errore di versione .NET. Ho controllato il file vdproj per qualsiasi riferimento a "4.0" e l'ho trovato solo per AspNetVersion, che si è verificato anche nella versione x86 dell'installer che funziona.

"AspNetVersion" = "8:4.0.30319.0" 

Ho bisogno di rilasciare con .NET 3.5, quindi questo è stato solo un esercizio per vedere se cambiare la versione a qualcos'altro e ritorno sarebbe risolvere il problema.

+0

Non completamente correlato al problema, ma ho notato che si conservano più file di progetto per diverse piattaforme di destinazione. Dovresti verificarlo, potrebbe semplificarti la vita: http://stackoverflow.com/a/145970/81193 –

+0

Ho avuto il mio progetto in precedenza, ma la DLL di C++ non si registrava correttamente e non potevo accedere esso. Per un capriccio, l'ho aggiunto al progetto e tutto ha funzionato come un incantesimo ... almeno fino a quando non è emerso questo problema. Grazie per il collegamento, però. – Tim

risposta

9

Si scopre che il codice C++ è stato anche associato a .NET per qualche motivo. Ho usato l'articolo this per aiutarmi a cambiare la versione di C++ .NET dalla 4.0 alla 3.5. I passaggi fondamentali sono

  1. Aprire il C++ progetto vcxproj in un editor di testo
  2. Trova <TargetFrameworkVersion>v4.0</TargetFrameworkVersion>
    • Questo può avere bisogno di essere creati sotto la Globals PropertyGroup
  3. Change 4.0 a 3.5
  4. Aprire il progetto in VS
  5. Fare clic destro del progetto C++ e selezionare Proprietà
  6. Selezionare Proprietà comuni e confermare che la versione è 3.5
  7. Selezionare Configurazione Proprietà -> Generale
  8. Assicurarsi che il Toolset Platform è impostato su V90
+1

Incredibile! Questo è stato per me (V3.5 SP1).Per VS2010, ho sicuramente dovuto aggiungere v3.5 all'interno del PropertyGroup Globals, e # 6 non è presente e # 8 è v100. GRAZIE! –

4

ha avuto lo stesso problema di questo progetto era stato convertito dal 2008 al 2010.

Per modificare il programma di avvio automatico, ho aperto il .csproj e manualmente rimosso istanze da 3,5 in esso:

<BootstrapperPackage Include="Microsoft.Net.Client.3.5"> 
    <Visible>False</Visible> 
    <ProductName>.NET Framework 3.5 SP1 Client Profile</ProductName> 
    <Install>false</Install> 
</BootstrapperPackage> 
<BootstrapperPackage Include="Microsoft.Net.Framework.3.5.SP1"> 
    <Visible>False</Visible> 
    <ProductName>.NET Framework 3.5 SP1</ProductName> 
    <Install>false</Install> 
</BootstrapperPackage> 

Inoltre, ho scoperto che si può semplicemente fare clic destro sul progetto di installazione e distribuzione, proprietà ha colpito, andare a prerequisiti e selezionare il framework .NET corretto.

È stato difficile trovarlo, è necessario fare clic sul pulsante Prerequisiti.

33

Per alterarlo tramite l'interfaccia utente (non un editor di testo). Tratto da here.

1) Selezionare progetto di installazione

2) In Esplora soluzioni o soluzione Navigator fare clic sull'icona nella parte superiore del pannello "delle condizioni di avvio Editor" (sua l'icona con il binocolo).

3) In Condizioni di avvio, selezionare ".Net framework" sulla destra in "Proprietà" Selezionare "Versione" per visualizzare un menu a discesa. cambia il framework nel tuo framework di destinazione.

4) Creare e installare.

Se quindi si riceve un messaggio simile al seguente:

ATTENZIONE: La versione del .NET Framework condizione di avvio' .NET Framework 4' non corrisponde il pacchetto di avvio automatico Framework .NET selezionato . Aggiorna la condizione di avvio di .NET Framework in modo che corrisponda alla versione di .NET Framework selezionata nella finestra di dialogo Prerequisiti.

effettuare le seguenti operazioni:

1) Fare clic destro del progetto di installazione e fare clic su 'Proprietà'.

2) Fare clic sul pulsante 'Prerequisiti'.

3) Modificare come desiderato.

+0

Perfetto! Voto +1 –

Problemi correlati