2009-06-07 16 views
6

Załóżmy, że mam aplikację .Net Framework 3.5 SP1/CLR 2.0, która musi działać na platformach x86 i x64. Załóżmy również, że z jakiegokolwiek powodu muszę utworzyć oddzielne programy instalacyjne x86 i x64.Czy są jakieś zalety podczas kompilowania złożenia jako x64?

W każdym razie, czy mam instalator specyficzny dla x64, czy będzie jakaś korzyść, aby rekompilować samą aplikację jako x64, zamiast kierować na "AnyCPU"?

Czy ustawienie celu na x64 zmienia cokolwiek w ogóle oprócz informacji nagłówka wygenerowanego zespołu?

+0

(usunięty zespół znaczników, ponieważ prawie wszystkie komunikaty z tym znacznikiem dotyczą asemblera, a nie zespołów .NET) –

Odpowiedz

4

Jeśli wybierzesz x64, zmieni on niektóre domyślne ustawienia pamięci dla programu, czyniąc go nieco bardziej wydajnym w programach z dużym naciskiem pamięci. Większe stosy wątków są przydzielane podczas kompilacji przy użyciu x64 (link)

2

Dopóki nie jesteś Ngen "z żadnych złożeń, lepiej zostawić jako" AnyCPU "i pozwól JIT kierować się architekturą.

1

Znalazłem, niż gdy owijam natywną bibliotekę dll x86, zespół opakowania musi zostać skompilowany na platformę x86, w przeciwnym razie generowany jest wyjątek BadImageFormatException na maszynie x64. Potem są to śnieżki, ponieważ wszystkie zestawy odwołujące się do tego zestawu również muszą zostać skompilowane dla platformy x86.

Możliwe, że robię coś złego, ale to właśnie znalazłem. Gdybym nie korzystał z bibliotek dll natywnych, zostawiłbym wszystkie moje zespoły jako "AnyCPU".

0

Nie wiem zbyt wiele o zespołach .net, ale generalnie, jeśli wiesz, że program zostanie wykonany tylko w architekturach x64, kompilacja go w kodzie maszynowym x64 dostaniesz trochę poprawy wydajności, a będziesz nic nie tracić (o ile wiesz już, że będzie on wykonany tylko w środowiskach x64).

Powiązane problemy