2009-04-09 27 views
11

Chúng tôi sử dụng msbuild để xây dựng ứng dụng .NET trên một máy chủ chuyên dụng để xây dựng. Chúng tôi đang di chuyển sang phần cứng mới có 64 bit Windows 2003. Tôi có thể xây dựng ứng dụng bằng cách sử dụng phiên bản 64 bit của msbuild được tìm thấy trong Framework64 hoặc tôi có thể xây dựng nó bằng cách sử dụng câu lệnh 32 bit được tìm thấy trong Framework. Có lợi thế nào khi xây dựng với phiên bản 64 bit của msbuild không?Có lợi thế nào khi xây dựng ứng dụng .NET của tôi với khung công tác 64 bit không?

Trả lời

10

Không đặc biệt là không. Ưu điểm thực sự duy nhất là phiên bản 64 bit của msbuild sẽ có thể tận dụng được nhiều không gian địa chỉ hơn. Đó là thực sự về nó.

+2

Không liên quan (và có thể đảm bảo câu hỏi của riêng mình), nhưng có lý do nào mà bạn biết rằng tệp 32Bit msbuild.exe sẽ xây dựng thành công nhưng phiên bản 64Bit sẽ không thành công với System.AccessViolationException không? –

+2

Tôi đã chạy vào cùng một điều. Framework64/Msbuild không thành công trên GenerateSerializationAssemblies, với ngoại lệ Out of Memory. –

2

Không, nhưng có thể có một số nhược điểm ... nếu ứng dụng của bạn sử dụng bất kỳ trình điều khiển bên thứ 3 nào, hãy đảm bảo rằng chúng cũng tuân thủ 64 bit. Chúng tôi gặp phải vấn đề mà chúng tôi chuyển đổi một ứng dụng cũ sang .net và giữ cài đặt 'Platform Target: Any CPU' mặc định trên Build-> General và trong khi ứng dụng hoạt động rất tốt trên máy phát triển của chúng ngay khi chúng tôi chuyển nó sang một máy chủ 64bit đã chết. Hãy cho chúng tôi một thời gian để theo dõi nó trở lại một trình điều khiển ODBC bên thứ 3 mà chúng tôi yêu cầu để giao tiếp với một nguồn dữ liệu bên ngoài. Ứng dụng DID hoạt động trên nền tảng 64bit, chúng tôi chỉ cần xác định x86 cho CPU có thể đánh bại mục đích.

0

Cụm hội đồng nối tiếp Biztalk là một ví dụ tốt về các cụm không có khả năng 64 bit. Vì vậy, kiểm tra và kiểm tra lại khi/sau khi thực hiện một động thái như vậy.

+2

Tôi đã không hỏi liệu tôi có nên chạy ứng dụng của mình trong khung công tác 64 bit hay không. Tôi đã hỏi nếu có bất kỳ lợi thế nào khi sử dụng khung công tác 64bit, thì msbuild.exe trong Framework64, để xây dựng ứng dụng của tôi. –

1

nếu bạn định làm asp.net một lợi thế lớn là IIS có thể truy cập nhiều bộ nhớ hơn, điều này mang lại cho bạn khả năng mở rộng hơn.

Dấu chấm không đá kẻ đã làm một chương trình về vấn đề này
http://www.dotnetrocks.com/default.aspx?showNum=341

có rất nhiều thông tin thực sự tốt về nó.

+4

Tôi đã không hỏi liệu tôi có nên chạy ứng dụng của mình trong khung công tác 64 bit hay không. Tôi đã hỏi nếu có bất kỳ lợi thế để sử dụng khuôn khổ 64bit, các msbuild.exe theo Framework64, để xây dựng ứng dụng của tôi. –

+0

có bạn nhận được nhiều bộ nhớ hơn nếu bạn chạy ứng dụng của mình trong môi trường 64 bit khi đó là ứng dụng 32 bit, nhưng bạn thậm chí còn nhận được nhiều hơn khi bạn biên dịch nó thành 64bit –

1

Nếu MSBuild đang chạy thử nghiệm có phụ thuộc vào thư viện x64; hoặc nếu quá trình xây dựng của bạn khác đòi hỏi phải tải các thư viện native x64, bạn cần sử dụng msbuild x64.

Chúng tôi đã phải sử dụng msbuild x64 vì chúng tôi đang chạy thử nghiệm xunit và một số thư viện của chúng tôi thành x64 vì chúng gọi là lib x64 gốc.

Về mặt lý thuyết, chúng tôi có thể đã sử dụng một nhân tố thử nghiệm khác để khởi chạy quy trình x64 để chạy thử nghiệm; nhưng sử dụng msbuild x64 là dễ nhất.

Như đã nêu trong https://xunit.github.io/docs/running-tests-in-msbuild.html:

Bạn có thể sử dụng một nhiệm vụ <exec> trong MSBuild để chạy giao diện điều khiển Á hậu. Bạn có thể chọn sử dụng trình điều khiển Á hậu nếu bạn cần kiểm soát nhiều hơn đối với chạy thử nghiệm trong môi trường 32 bit so với 64 bit. Khi sử dụng trình chạy MSBuild, bạn bị giới hạn ở sự lựa chọn bit của tệp thực thi MSBuild mà bạn đã sử dụng để chạy bản dựng của mình.

Lưu ý rằng việc này không liên quan gì đến việc biên dịch - chúng tôi có thể đã tạo dự án chỉ x64 của mình bằng cách sử dụng msbuild x86.

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