2010-01-27 2 views
24

Sto lavorando su alcuni progetti C# con Visual Studio 2005 e sto cercando di cambiare il target della piattaforma da x86 a qualsiasi CPU. Ho già esaminato tutte le dipendenze che conosco e ho fatto in modo che fossero anche costruite per qualsiasi CPU usando lo strumento corflags.Modifica di un progetto C# di Visual Studio da x86 a qualsiasi CPU

Quando cambio la destinazione della piattaforma in Visual Studio 2005 sembra che salva la modifica, ma quando costruisco il progetto utilizza comunque x86. La prossima volta che apro il progetto, il target della piattaforma è stato reimpostato su x86.

Questo accade solo per un paio di progetti nella soluzione, significa che ci sono altre dipendenze a 32 bit da qualche parte?

posso eseguire manualmente il compilatore C# sulla linea di comando con /platform:anycpu e non un errore, ma non sono sicuro che sia la cosa giusta da fare e mi piacerebbe essere in grado di costruire all'interno di Visual Studio.

Cosa posso fare per risolvere questo problema?

+2

Sei sicuro di aver cambiato il target della piattaforma in tutte le configurazioni (cioè nella configurazione di debug e release)? –

+2

Non penso che a VS interessino le dipendenze. Sono stato in grado di creare progetti AnyCPU con dipendenze a 32 bit, che si bloccano prontamente (e in modo appropriato) quando la DLL ha tentato di caricare. Vai con il suggerimento di divo. –

+0

Ho cambiato la destinazione della piattaforma in tutte le configurazioni e continua a eseguire il compilatore con/platform: x86 e non salva la modifica nel progetto. – WildCrustacean

risposta

21

Assicurati di aver cambiato sia la Piattaforma configurazione e la Piattaforma di destinazione-Any CPU. Se tutto il resto fallisce, è possibile aprire .csproj e modificare manualmente i riferimenti. Fai clic con il tasto destro del mouse sul progetto, vai a Scarica progetto. Quindi fai clic con il pulsante destro del mouse e vai a Edit MyProject.csproj. Le proprietà per il progetto possono ancora comprendere la piattaforma predefinita come x86:

<PropertyGroup> 
    <Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration> 
    <Platform Condition=" '$(Platform)' == '' ">x86</Platform> 

Considera anche il caso in cui la soluzione è ancora la configurazione x86 in Configuration Manager. Ho trovato per alcune soluzioni complesse con più progetti che hanno diverse configurazioni. Devo passare molto tempo in Configuration Manager a fare tutto in modo corretto.

+0

Avevo cambiato sia la piattaforma di configurazione che la piattaforma di destinazione, e ancora non avrebbe salvato la modifica. Sono stato in grado di modificare il file .csproj e farlo in questo modo, quindi penso che questo sia quello che stavo cercando a questo punto. Indipendentemente dal fatto che funzioni o meno è un'altra storia. Ho ancora la sensazione che questo potrebbe avere a che fare con le dipendenze che non riesco a vedere essere preso di mira per altre piattaforme, ma è difficile da dire. – WildCrustacean

+0

In questo tentativo ho cercato di risolvere lo stesso problema ... Alla fine ho scoperto che anche se un progetto è impostato per il debug, ad esempio, Debug/Any CPU nella configurazione della soluzione per Debug/Any CPU, la pagina delle proprietà del progetto, 'build 'tab, ti permette di scegliere una piattaforma di destinazione per' Debug/Any CPU '. Nel mio caso, "Debug/Any CPU" ha mirato x86 in modo esplicito, e così quando ho compilato il progetto per Debug/Any CPU, la DLL risultante è stata compilata esplicitamente per x86 ... che ha causato errori di formato non valido quando caricata in un ambiente x64. E c'era molto 'wtf?' essere avuto –

+1

Giusto per chiarire, non sto parlando delle impostazioni di Configuration Manager ... ci sono due punti in cui è possibile specificare erroneamente la configurazione. Il solution manager consente di impostare il progetto su 'Release/x64' per la configurazione 'Debug/Any CPU' ... la scheda build delle proprietà del progetto ti consente di dire 'Release/x64' come target della piattaforma x86. Confuso ancora? –

-6

Non sarà possibile eseguire questa operazione per un progetto gestito e ritengo che l'impostazione sia irrilevante per i progetti gestiti poiché devono essere eseguiti su qualsiasi CPU in realtà.

+0

Cosa intendi per "progetto gestito"? Da quello che capisco, dovrei essere in grado di creare i miei assembly come x86, x64 o anycpu, cambiando l'impostazione di destinazione della piattaforma nelle proprietà di costruzione. – WildCrustacean

+6

-1, l'impostazione è rilevante per Progetti gestiti se utilizzano DLL non gestite. – user7116

+0

Non ho pensato a x86 o x64, ho pensato solo al codice gestito puro – gyurisc