Cambia il progetto C ++ / CLI in un altro framework rispetto a 4.0 con vs2010


153

Da quando ho aggiornato il mio progetto al formato di progetto Visual Studio 2010, il mio progetto C ++ / CLI è destinato a .net framework 4.0.

È facile cambiare la versione del framework in un'altra versione da un progetto C #, ma non ho idea di come farlo in un progetto C ++ / CLI, non vedo alcuna impostazione per questo nelle pagine delle proprietà del progetto.

Risposte:


190

Viene visualizzato quando si preme F1 nella finestra di dialogo Framework e riferimenti:

Per impostazione predefinita per i nuovi progetti, il framework di destinazione è impostato su .NET Framework 4. L'IDE non supporta la modifica del framework di destinazione, ma è possibile modificarlo manualmente. Nel file di progetto (.vcxproj), il framework di destinazione predefinito è rappresentato dall'elemento proprietà v4.0. Per modificare il framework di destinazione, scaricare il progetto, utilizzare un editor di testo per aprire il file di progetto, quindi modificare il valore dell'elemento proprietà da v4.0 a un'altra versione installata sul server. Ad esempio, se si specifica v3.5, che rappresenta .NET Framework v3.5, è necessario installare Visual Studio 2008 SP1 . Salvare e chiudere il file, ricaricare il progetto e verificare che il framework di destinazione sia visualizzato nella pagina delle proprietà. *

Questo non è tremendamente preciso nei progetti convertiti, dovrai aggiungere l' <TargetFrameworkVersion>elemento tu stesso. Inseriscilo nel gruppo di proprietà con l'etichetta "Globali":

  <PropertyGroup Label="Globals">
    <TargetFrameworkVersion>v3.5</TargetFrameworkVersion>
    <others...>
  </PropertyGroup>

La storia è diversa quando si utilizza VS2012 e versioni successive, la prima versione di VS che ha acquisito l'impostazione Platform Toolset nella pagina delle proprietà Generale. È quindi necessario selezionare "v90" per ottenere una build corretta destinata a 3.5. È comunque maldestro, è necessario avere tutte le versioni intermedie di VS installate sul computer per avere quella selezione disponibile.

Perché è necessario VS2008 installato richiede una spiegazione da solo. Il problema principale è che la libreria di runtime C (msvcrt100.dll e versioni successive) contiene codice .NET per supportare l'esecuzione di codice gestito. Il dettaglio cruciale è un inizializzatore del modulo che garantisce che il CRT sia inizializzato correttamente nel programma che utilizza il codice C ++ / CLI. Tale codice è sempre indirizzato a .NET 4 e poiché è inserito in msvcrt100.dll (e versioni successive), si ha sempre una forte dipendenza dal runtime v4.0.30319. È possibile avere una dipendenza pura v2.0.50727 solo quando si utilizza il vecchio runtime C, msvcrt90.dll. Puoi essere sicuro di avere una dipendenza msvcrt90.dll quando usi i file #include del compilatore di VS2008.

Fatto freddo e duro che è abbastanza necessario passare presto a .NET 4, se non lo fai avrai difficoltà a creare problemi come questo. Ci sono pochissimi ostacoli pratici a questo proposito, .NET 4 è ampiamente disponibile gratuitamente su tutti gli obiettivi che immagineresti. Il superamento del FUD associato al passaggio a una versione di runtime superiore è generalmente solo il vero problema. Nessun motivo di paura e dubbio, è stabile.


8
Ora ho eseguito questi passaggi, ma ora viene visualizzato l'errore "MSB8009: .NET Framework 2.0 / 3.0 / 3.5 indirizzato al set di strumenti della piattaforma v90. Assicurarsi che Visual Studio 2008 sia installato sul computer". Non ho VS2008.
codymanix,

8
Citazione dalla mia risposta: "È necessario installare Visual Studio 2008 SP1". Ti mancano gli strumenti di compilazione richiesti.
Hans Passant,

2
Potrebbe essere necessario anche eliminare il file .suo e riaprire la soluzione. Come è stato nel mio caso.
alehro,

Ho funzionato semplicemente installando Visual Studio 2008 express (gratuito). In realtà ho avuto un sacco di errori quando ho cambiato il set di strumenti della piattaforma in v90. Tornando alla v100 li ho risolti tutti!
simon.d

4
Quando si creano programmi .NET Framework 4.0 che utilizzano progetti misti C ++ / CLI e C # usando Visual Studio 2010, l'installazione di .NET Framework 4.5 (o Visual Studio 2013, fornito con .NET Framework 4.5) porta a progetti C ++ / CLI in VS 2010 sarà costruito contro 4.5 anziché precedente 4.0. Quando si hanno progetti C # creati contro 4.0 nella stessa soluzione che fa riferimento ai progetti C ++ / CLI, questo si interrompe. L'inserimento di <TargetFrameworkVersion> v4.0 </TargetFrameworkVersion> nei file vcxproj dei progetti C ++ / CLI risolve questo problema. \ o /
Daniel Albuschat,

18

Sì, è possibile modificare l'obiettivo anche per i progetti C ++ gestiti:

Modifica di .NET Framework di destinazione per C ++ / CLI (VS 2010) Per modificare la versione di .NET Framework per progetti C ++ / CLI (VS 2010)

Fare clic con il tasto destro del mouse sul progetto in Esplora soluzioni e fare clic su Scarica progetto Fare clic con il tasto destro del mouse sul progetto non scaricato in Esplora soluzioni e selezionare Modifica <projectname>.vcxprojnel progetto File XML individuare nodo <PropertyGroup Label="Globals">In quel nodo individuare nodo <TargetFrameworkVersion>(se non è possibile trovare il nodo, aggiungerlo) Il testo interno del nodo definisce quadro di destinazione. Può essere v2.0, v3.0, v3.5 o v4.0 Salvare il file vcxproj e chiuderlo Fare clic destro sul progetto scaricato in Esplora soluzioni e fare clic su Ricarica esempio di progetto <TargetFrameworkVersion>v3.5</TargetFrameworkVersion>

Nota: questi passaggi si applicano solo a Visual Studio 2010 in quanto utilizza un nuovo formato di file di progetto C ++.

Origine su MSDN: Procedura: modificare Target .NET Framework


5

da un utente anonimo:

(Modifica poiché sono un nuovo utente e non riesco a rispondere a questo, chiunque lo senta libero di inviare quanto segue) La modifica del set di strumenti in v100 causa effettivamente VS2010 come destinazione .NET 4.0, anche se verrà comunque visualizzato come targeting 3.5 nel proprietà del progetto. VS2010 dovrebbe davvero emettere un avviso a riguardo, perché attualmente sembra che tu possa scegliere come target .NET 3.5 con il set di strumenti v100, cosa che non puoi.


Questo perché il multi-targeting ti consente solo di scegliere come target V2.0, 3.0, 3.5 e 4.0; Le versioni 1.x di .Net non possono essere prese di mira in questo modo
Jeroen Landheer

0

In VS 2010 se il set di strumenti è installato, vai a proprietà progetto-> proprietà config-> generale e cambia il set di strumenti della piattaforma da v90 a v100.

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.