2009-02-11 18 views
6

Nhóm của tôi đang nhận được các máy trạm XP64 mới. Chúng tôi đã sử dụng XP32 cho đến bây giờ. Hầu hết công việc của chúng tôi được thực hiện trong quản lý C#/VS2008/.net 3.5 và SQL Server 2005. Tuy nhiên chúng tôi có một vài ứng dụng vẫn còn trong VS2005/.net 2.0. Phần lớn các ứng dụng của chúng tôi là các ứng dụng webforms ASP.NET và các dịch vụ WCF đang chạy trên các máy chủ 64 bit trong sản xuất. Tuy nhiên, chúng tôi có một số phát triển WPF đang diễn ra mà sẽ phải chạy trên các máy 32 bit.Đội đang chuyển từ XP32 sang XP64 để phát triển .NET - Mọi Gotchas?

Có bất kỳ cơn đau khớp hoặc chuyển tiếp nào mà chúng ta nên biết không?

+1

Tại sao XP64 không phải là vista64? Tôi tin rằng vista64 có trình điều khiển tốt hơn thì XP64 –

+0

Nhóm cơ sở hạ tầng muốn di chuyển khỏi XP trong chu kỳ Windows 7. –

Trả lời

7

Nếu bạn đang tham khảo bất kỳ bên thứ ba DLL được biên soạn cho 32-bit, sau đó bạn sẽ phải nhắm mục tiêu ứng dụng của bạn cho 32-bit. Điều này có thể được thực hiện bằng cách thay đổi cài đặt dự án hoặc sử dụng ứng dụng corflags với tham số/32BIT +.

Chỉ có "gotcha" mà tôi gặp phải trong nhiều tháng XP x64 của tôi như một máy trạm phát triển là Edit-And-Continue không hoạt động trong trình gỡ rối Visual Studio trong các ứng dụng 64 bit.

0

Mặt trời có bài viết hay về nó. http://developers.sun.com/solaris/articles/ILP32toLP64Issues.html

Nó không phải là bất thường đối với dòng điện 32-bit ứng dụng để giả định rằng int loại, loại dài, và gợi ý là cùng kích thước . Vì kích thước dài và con trỏ thay đổi trong mô hình LP64 , thay đổi này đơn thuần là nguyên nhân chính của vấn đề chuyển đổi từ ILP32 đến LP64 .

+0

C# không xử lý trực tiếp với con trỏ, đây không phải là vấn đề với mã được quản lý. – joshperry

3

Điều đó tùy thuộc.

Bạn đã sử dụng P/Gọi trong mã của mình chưa?

Bạn đã sử dụng mã không được quản lý và dữ liệu được đầm lầy đến và đi từ nó? Nếu vậy thì bạn sẽ phải trải qua mã này bằng lược răng tốt: (

Tuy nhiên nếu mã của bạn là C# thuần túy chưa sử dụng P/Gọi thì khác biệt duy nhất bạn nên thấy là tăng hiệu suất nhỏ và hiệu suất bộ nhớ tốt hơn :).

Tuy nhiên, bạn có thể gặp phải các trình điều khiển tìm kiếm của gremlins cho các máy phát triển của mình.

Nếu bạn có một số mã 32 bit thì có lẽ bạn có thể tạo giao diện WCF cho nó (tên đường ống rất, rất nhanh) và sử dụng để nói chuyện với dịch vụ 32 bit. Tôi biết rằng bạn không thể có mã 32 bit trong quy trình 64bit, nhưng tôi nghĩ bạn có thể mở một đường ống đến quy trình 32 bit, trừ khi tôi có lỗi đó. Bạn luôn có thể sử dụng TCP/IP trong trường hợp đó. Có thể giúp bạn tiết kiệm từ viết lại mã quan trọng trong hệ thống của bạn và cho phép bạn sử dụng WOW64 hoặc máy ảo để giải quyết vấn đề di chuyển.

+0

Phần lớn mã của chúng tôi là quản lý thuần túy C# với ngoại lệ của một dll win32 rất cô lập và được bao bọc trong một dịch vụ web. Nghe có vẻ như chúng ta nên giữ ở một máy 32 bit xung quanh trong trường hợp chúng ta cần phải thay đổi dịch vụ đó. Ảo hóa sẽ làm việc quá tôi đoán. –

2

Tôi đã sử dụng XP 64 bit trong vài tháng năm ngoái. Kinh nghiệm của tôi là ngăn xếp phát triển của Microsoft được cài đặt và làm việc mà không có bất kỳ vấn đề nào, bao gồm cả phiên bản 64-bit của SQL Server.

Tôi gặp sự cố với trình điều khiển mạng cho bo mạch mạng Marvell Yukon trên bo mạch chủ Asus của tôi. Các trình điều khiển 64 bit có vấn đề nghiêm trọng mà không phải là ngay lập tức rõ ràng, nhưng trở nên rõ ràng sau vài tháng thử nghiệm dữ dội. Tốc độ truyền mạng trên một mạng Gigabit không như mong đợi, và khi hai tiến trình truy cập vào cùng một tài nguyên mạng, Windows sẽ sụp đổ.

Đề xuất của tôi, giống như áp phích khác được đề xuất, để kiểm tra thiết lập phần cứng-phần mềm trước khi bạn chuyển qua toàn bộ nhóm. Điều này có nhiều khả năng bạn sẽ thấy vấn đề.

3

hy vọng sự giúp đỡ này

Registering COM 32 bit DLL for asp 64 bit call

Many links about convention 32-64 bits

General FAQs About 64-bit Windows

64-bit System Design

xem mẹo này quá Biggest performance improvement you’ve had with the smallest change?

hơn

lời khuyên blog tuyệt vời: Back to Basics: 32-bit and 64-bit confusion around x86 and x64 and the .NET Framework and CLR

Windows Application Quality Cookbook from Microsoft

DevReadiness.org
Trang web này là dành riêng cho việc hỗ trợ các hệ sinh thái Windows ISV phát triển các ứng dụng chất lượng cao cho các phiên bản mới của nền tảng này. Windows 7 gần đây đã được công bố tại hội nghị PDC 2008, một liên kết đến "sách dạy nấu ăn sẵn sàng" mới được cung cấp ở bên phải

Các nhân viên MicrosoftPS OPS đã viết blog về việc di chuyển sang x64 và cách hoạt động.
Running Microsoft.com on 64 Bit…The Dependencies, The Goodness, the Gotcha’s

2

Tôi đã phát triển trên nền tảng 64 bit một thời gian. Đây là một mẹo nhỏ có thể giúp bạn giảm đau đầu.

Nếu bạn nhận được ngoại lệ

"BadImageFormatException" (ví dụ: "Ông có thể không tải hoặc lắp ráp 'Microsoft.TeamFoundation vv vv hoặc một trong những phụ thuộc của nó. Một cố gắng đã được thực hiện để tải một chương trình với định dạng không chính xác ")

có khả năng cao là ứng dụng không thể tìm thấy phiên bản lắp ráp 64 bit.

Chúng tôi gặp phải lỗi này thường xuyên khi truy cập cơ sở dữ liệu bằng trình điều khiển OLEDB/Jet. Tôi cũng đã trải nghiệm điều này với các công cụ tích hợp với TFS.

Để khắc phục điều này, hãy chuyển đến tab "Biên dịch" trong cài đặt dự án của bạn, "Tùy chọn biên dịch nâng cao" và chọn "x86" làm CPU mục tiêu.

Hy vọng điều này sẽ hữu ích!

+0

Không phải là chuyển đổi flick bạn trở lại mã 32bit WOW? – Spence

+0

Có nhưng bạn không có lựa chọn thực sự nếu bạn cần ứng dụng của bạn để sử dụng trình điều khiển máy bay phản lực. – Adrian

1
  • Gỡ rối chế độ hỗn hợp là một vấn đề nếu bạn sử dụng bất kỳ C++ và C# nào có ứng dụng 64 bit.
  • Vẫn còn nhiều công cụ phát triển không hỗ trợ chạy trên Windows x64 hoặc không hỗ trợ làm việc với các tệp nhị phân 64 bit. Lấy ví dụ, Compuware DevPartner. Nó hiện chỉ hỗ trợ phát triển ứng dụng 32 bit, nhưng bản thân ứng dụng sẽ chạy trên Windows 64 bit.
3

Bạn sẽ không thể nói chuyện với cơ sở dữ liệu MS Access từ .NET x64, vì không có trình điều khiển máy bay phản lực x64.

Tôi sẽ coi đây là lý do tuyệt vời để chuyển sang x64.

+1

+1 cho chế độ lén lút nói chung (và thật vui) :) – JMarsch

1

TFS không hỗ trợ 64 bit (TFS Server, không chắc chắn cho đội thám hiểm)

+0

Máy khách hoạt động tốt - đó chỉ là thành phần phía máy chủ ứng dụng không hỗ trợ 64 bit. – JMarsch

1

Bạn có thể chạy vào một vấn đề với string.GetHashCode() trả về một giá trị khác nhau cho cùng một chuỗi trên 32-bit và các máy 64 bit khi chúng chạy các phiên bản khác nhau của CLR.

Quan trọng:

“Hành vi của GetHashCode là phụ thuộc vào việc thực hiện, mà có thể thay đổi từ một phiên bản của bộ thực thi ngôn ngữ chung khác. Lý do tại sao điều này có thể xảy ra là cải thiện hiệu suất của GetHashCode. ”

Thông tin thêm herehere.

1

Sẽ có hai bộ Nguồn dữ liệu ODBC (DSN) ngay bây giờ: 32 bit và 64 bit. Một số cơ sở dữ liệu hiện không có trình điều khiển cập nhật cho 64-bit, do đó bạn sẽ bị buộc phải sử dụng trình điều khiển 32 bit hoặc bạn chỉ có thể đợi.

1

Chúng tôi đã gặp 2 loại khác nhau của vấn đề:

  1. Chúng tôi đã có một thành phần bên thứ 3 mà wrappered một dll 32-bit bản địa. Nhà cung cấp không cung cấp phiên bản 64 bit, vì vậy chúng tôi phải nhắm mục tiêu phát triển 32 bit.

  2. Một vài vấn đề về trình điều khiển. XP-64 đã không bắt gặp rất nhiều (có ngay bây giờ?) Khi chúng tôi thử nó. Các vấn đề không liên quan đến phát triển, nhưng chúng tôi gặp một số vấn đề với trình điều khiển máy in, trình điều khiển mạng, v.v.). Trong vista, họ đã thay đổi mô hình trình điều khiển, vì vậy có thể có thêm nhiều trình điều khiển 64 bit hiện có, nhưng tôi không biết liệu chúng có tương thích ngược với XP hay không.

Các vấn đề liên quan