2009-06-12 29 views
11

Nếu tôi có ứng dụng .NET "Any CPU" được biên dịch, nó sẽ chạy ở chế độ 64 bit trên hệ điều hành 64 bit.Có cách nào để buộc ứng dụng biên dịch "Bất kỳ CPU" nào chạy ở chế độ 32 bit trên hệ điều hành 64 bit không?

Nhưng nếu tôi vì lý do nào đó, muốn buộc ứng dụng này chạy ở chế độ 32 bit. (Như thể nó được biên dịch bằng cách sử dụng "x86"). Biên dịch lại không phải là một lựa chọn, vì vậy có thể cấu hình tại thời gian chạy không? Với tệp .manifest có lẽ?

Trả lời

10

Tôi tin rằng bạn có thể làm điều này với CorFlags.exe

Cái gì như:
CorFlags yourassembly.exe/32bit +

Lưu ý rằng nếu lắp ráp mạnh mẽ tên bạn cũng sẽ phải sử dụng tùy chọn/force mà phá vỡ việc đặt tên mạnh, vì vậy bạn sẽ phải từ chức việc lắp ráp.

+0

Vâng, thật không may là không khả thi. Ứng dụng được đề cập có tên mạnh và được phân phối cho người dùng cuối (người tiêu dùng) và việc ký lại cũng không thực sự là một tùy chọn. Quá tệ. –

+1

Bạn có thể đặt CLR để bỏ qua xác minh tên mạnh cho một hội đồng được chỉ định. Sử dụng "sn.exe -Vr assemblyname" (-Vu để kích hoạt lại). Rõ ràng điều này sẽ phải được chạy trên máy khách hàng. Tôi sẽ không thực sự khuyên bạn nên điều này mặc dù như vô hiệu hóa xác minh tên mạnh về cơ bản đấm một lỗ hổng bảo mật trong CLR, bất kỳ hội đồng có thể được sao chép trên ứng dụng của bạn và sẽ nhận được sự tin tưởng hoàn toàn tự động (xem: http://msdn.microsoft.com/en -us/library/k5b5tt23.aspx). Đề nghị của tôi là không gây rối với điều này, tìm một cách để làm một biên dịch lại, hoặc không làm điều đó. –

+0

@Simon P.Stevens, tôi đồng ý với bạn về tất cả các điểm. Hy vọng của tôi là nó có thể là một mục trong tệp kê khai mà tôi có thể phân phối. Nhưng điều đó có vẻ không đúng. –

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