2009-09-30 25 views
55

Tôi đang sử dụng Visual Studio 2008, C#. Tôi cố gắng sử dụng chỉnh sửa-and-tiếp tục (chỉnh sửa mã trong khi gỡ lỗi), và nhận được ngoại lệ này:"Không được phép thay đổi các ứng dụng 64 bit" khi gỡ lỗi trong Visual Studio 2008

"Thay đổi cho các ứng dụng 64-bit không được phép"

Tại sao vậy? Có cách giải quyết nào không?

+3

Những câu trả lời này có giúp: http://stackoverflow.com/questions/30183/how-do-i-enable-edit-and-continue-on-a-64-bit-application-and-vb2008-express – Zenuka

+0

Đọc tại đây http://social.msdn.microsoft.com/forums/en-US/csharpide/thread/479e8c54-5508-4f1d-9c2a-051d4d940424/ –

Trả lời

47

Chỉnh sửa và tiếp tục không được hỗ trợ trên các ứng dụng 64 bit ở cấp CLR do đó không có cách nào để Visual Studio thực hiện nó.

Cách dễ nhất để giải quyết vấn đề này là nhắm mục tiêu ứng dụng của bạn tới các chip x86. Điều này sẽ làm cho nó chạy trong chế độ Wow64 như là một quá trình 32 bit và do đó có thể ENC. Bạn có thể làm điều này bằng cách làm như sau

  1. Nhấp chuột phải vào ứng dụng .EXE và chọn Properties
  2. Chuyển đến Tab Build
  3. Đổi Nền tảng mục tiêu combo box để x86

enter image description here

+1

Jared, tôi đã hy vọng điều này sẽ bị xóa với .NET 4,0 nhưng nó xuất hiện không phải là trường hợp. Bạn sẽ có thể cung cấp bất kỳ cái nhìn sâu sắc vào điều này? –

+9

@Steven, thật tiếc là không có nhiều thông tin chi tiết để cung cấp ở đây. Hỗ trợ ENC 64 bit đã không đưa nó vào Visual Studio 2010/.Net 4 (để công bằng, chúng tôi đã giải quyết ** ** nhiều vào năm 2010 và mã ENC mới không rẻ đối với nhóm ngôn ngữ hoặc CLR). Nhưng biết rằng MS hiểu thiếu ENC 64 bit là một điểm đau và nguồn của sự thất vọng và tôi tưởng tượng nó cao trong danh sách cho Dev11. Vui lòng bỏ phiếu cho vấn đề này - http://connect.microsoft.com/VisualStudio/feedback/details/384453/enable-edit-continue-changes-to-64-bit-applications – JaredPar

+0

Cảm ơn bạn, Jared. –

4

Giống như jcopenha nói không có chỉnh sửa-and-tiếp tục trên x64 được nêu ra. Phiên bản hiện tại của CLR 64bit không hỗ trợ nó. Tuy nhiên, có một công việc xung quanh.

Bạn có thể tìm thấy nó trên Bug Babble post.

Bạn cần biên dịch hội đồng được quản lý của mình với CPU mục tiêu là x86. Điều này sẽ khiến CLR 32 bit được sử dụng thay vì CLR 64 bit.

Đối với dự án VB, nhấp chuột phải vào dự án và đi đến Thuộc tính/Biên dịch/Tùy chọn biên dịch nâng cao/CPU mục tiêu và đặt thành "x86". Đối với dự án C#, nhấp chuột phải vào dự án và vào mục Properites/Build/Platform Target và đặt nó thành "x86".

Hy vọng điều đó sẽ hữu ích.

0

Tôi đã có thông báo lỗi tương tự trong MS Visual C# Express 2010. Thật buồn cười, bởi vì ứng dụng đã được cấu hình chắc chắn như một dự án x86!

Cuối cùng, đó là dòng sau còn thiếu trong file csproj tôi:

<PropertyGroup Condition="'$(Configuration)|$(Platform)' == 'MY_CONFIG|x86'"> 
    ... 
    <PlatformTarget>x86</PlatformTarget> 
    ... 
</PropertyGroup> 

Tôi không biết tại sao nó đã mất tích ... Tôi đoán MS Visual C# Express 2010 không được thiếu sót kỹ;)

6

Cá nhân, điều tôi thực sự muốn dừng và chỉnh sửa không chỉnh sửa và tiếp tục.

Vì vậy, tôi chỉ cần tắt Công cụ/Tùy chọn/Gỡ lỗi/Chỉnh sửa và Tiếp tục.

Làm như vậy ức chế mà hộp thoại pesky từ làm phiền tôi về một tính năng còn thiếu tôi không muốn ở nơi đầu tiên :-)

+1

Tôi thích câu trả lời này so với những người khác vì nó không liên quan đến việc thay đổi nền tảng đích thành x86. – jcarpenter2

0
  1. khi Target CPU được thiết lập để 'Bất kỳ CPU, nó sẽ chạy dưới dạng ứng dụng 32 bit trên cửa sổ 32 bit và ứng dụng 64 bit trên cửa sổ 64 bit. Tuy nhiên, studio trực quan không cho phép tính năng 'chỉnh sửa và tiếp tục' cho ứng dụng 64 bit.

  2. Để gỡ rối 'lưu loát' trên máy 64bit, chúng ta có thể:

    a) thiết lập 'CPU Target' thành 'Bất kỳ CPU' nhưng kiểm tra 'thích 32bit' hộp.

    b) hoặc thiết lập 'CPU Target' thành 'x86'

RẤT quan trọng: cả hai tùy chọn đòi hỏi 'Enable tối ưu hóa' hộp được đánh dấu.

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