2010-06-17 18 views
0

ASP.NET 4.0:VS build - 32 bits vs 64

Mon ordinateur portable est en cours d'exécution 64 bits Win7 Ultimate en utilisant VS 2010 et IIS7.

Mes serveurs de développement, de transfert et de production sont tous des serveurs 2003 32 bits avec IIS6 (évidemment).

Questions:

  1. Je sais que cela vraiment non pris en charge, mais est-il possible que je peux obtenir IIS6 à courir sur mon ordinateur portable sous Win7? Ce serait bien de garder la configuration cohérente entre mon environnement local et le pipeline de déploiement, mais je refuse de revenir à XP.

  2. Si je compile sous VS2010 sous Win7 avec l'indicateur "Any CPU" défini dans la configuration cible, les assemblys générés sont-ils indépendants de la cible? C'est-à-dire, sont-ils spécifiques à 64 ou 32 bits, ou vont-ils vraiment travailler sur l'un ou l'autre? (Ma méthode habituelle d '«essayer et voir» ne fonctionne pas pour le moment pour une variété de raisons sans rapport).

  3. Sur mon ordinateur portable, j'ai les dossiers Framework et Framework64. Si les assemblys sont agnostiques, quelle est la différence entre eux et les assemblages que VS génère avec mon code? S'ils ne sont pas agnostiques, pourquoi ai-je deux dossiers distincts? Y a-t-il une différence de performance entre ces deux versions?

Merci d'avance.

Répondre

1
  1. Il n'y a aucun moyen, je le sais, d'exécuter une version différente de IIS que ce qui est basé sur le système d'exploitation. Depuis IIS est lié à l'installation de tout OS que vous avez (6.0 dans XP et Server 2003, 7.0 dans Vista et Server 2008, et 7.5 dans Win7 et Server 2008 R2), vous ne pouvez pas installer une version différente - vous aurez besoin d'un emplacement XP ou 2003 pour tester si vous voulez utiliser IIS6.

  2. Ils sont indépendants de la cible. VS ne compile pas réellement le code machine - il compile en IL (un "langage intermédiaire") que le framework .NET sur la machine de destination (x64 ou x86, selon la version du système d'exploitation installée) compile en code machine fonctionne nativement. En tant que tel, la compilation pour "AnyCPU" vous permettra de fonctionner sur l'un ou l'autre. Si vous préférez, vous pouvez cibler x86 lors de la compilation, et ils fonctionneront nativement sur vos serveurs x86 et utiliseront WoW sur votre machine x64, de sorte que vous exécuterez exactement le même code sur les deux. Cela signifie simplement que les deux versions de l'infrastructure sont installées: x64 et x86. Les assemblys sont indépendants de la cible, mais la version correspondante du framework convertit les assemblys .NET IL en code machine qui s'exécute nativement sur le PC. Pour ce faire, il doit y avoir un framework x86 à compiler en code machine x86 (si vous avez un processeur x86), et le même pour x64.

+0

Remarque: Win7 et Server 2008 R2 ne sont-ils pas tous les deux IIS 7.5? – Powerlord

+0

@ R. Bemrose: HA! J'ai sauté Vista (pas intentionnellement, pensait amusé néanmoins) - Je vais mettre à jour ma réponse. – SqlRyan

+0

Merci pour la réponse très complète. Cependant, si tous les assemblys étaient JIT'd à la demande (y compris, disons, System.Web.Services, ce que je ne peux pas imaginer est impliqué dans le processus de construction), pourquoi inclure autre chose que le Micrsoft.CSharp. *, Microsoft. Construire. *, Etc assemblées? Certains de ces wrappers peuvent-ils être entourés de code non géré, ce qui nécessite qu'ils soient préconstruits? Peut-être que j'ai besoin de pointer Reflector sur quelques-uns d'entre eux et voir ce qui se passe. –