2008-11-26 3 views
1

J'ai un projet C# Visual Studio (.csproj) qui fait référence à la version Framework64 de System.Data. Lorsque j'essaie de générer en utilisant MSBuild/Team Foundation Server (TFS) sur un autre ordinateur, il échoue car la DLL 64 bits n'existe pas.Les projets .NET 'Any CPU' doivent-ils être liés aux DLL Framework ou Framework64?

Devrais-je lier à la version Framework, ou est-ce que cela me limitera lors de l'exécution sur des machines 64 bits? Est-ce que .NET redirige la liaison pour utiliser 64 bits lorsque cela est possible?

Répondre

1

Je pense que vous voulez dire Un CPU dans votre question, correct? En supposant que c'est le cas, la liaison sans tenir compte de la morsure est la voie à suivre dans presque toutes les circonstances.

Rappelons que .NET code est JITed (Just In Time compilé) - ce qui signifie 32 bits et 64 bits du code d'un C# ou VB.NET compilateur est le même, peu importe ce que l'architecture vous envisagez d'exécuter. Lorsque le code est JITed au moment de l'exécution, c'est quand il devient 32 ou 64 bits.

Dans certaines situations, vous devez faire attention à l'architecture cible. Un cas particulier serait n'importe quelles références/dépendances sur COM -wrapper DLL, .NET Framework fourni ou autrement. Cela étant, ces fichiers DLL seront marqués (dans le cas de COM) comme 32 bits seulement (COM étant une architecture 32 bits seulement) s'ils n'étaient pas marqués comme 32 bits, l'interopérabilité vers COM ne fonctionnerait pas. Par conséquent, étant donné qu'ils sont marqués explicitement, les résultats de votre projet doivent également l'être.

+0

Alors pourquoi existe-t-il des DLL 64 bits et 32 ​​bits dans l'infrastructure. Sont-ils pré-optimisés pour être JITed? Ou sont-ils pré-optimisés pour appeler des API "WIN32" 32/4-bits? –

+0

Je n'étais pas sûr de cela, mais je pensais que certains des assemblys système étaient étroitement intégrés au code natif. Cet ancien article de blog semble suggérer que: http://blogs.msdn.com/junfeng/archive/2004/08/11/212555.aspx –

Questions connexes