2010-03-30 28 views
58

Có rất nhiều thông tin về các tính năng mới và các lớp in new 4,0 tuy nhiên cũng có những thay đổi có thể ảnh hưởng đến các ứng dụng hiện có, ví dụthay đổi Breaking trong .NET 4.0

  1. Khoảng thời gian hiện nay thực hiện IFormattable và cũ string.Format() với các tùy chọn không hợp lệ sẽ ném ngoại lệ thay vì gọi ToString đơn giản(). Tuy nhiên, nhóm CLR cung cấp một tính năng tốt đẹp để kích hoạt hành vi từ phiên bản trước đó với thiết lập cấu hình - TimeSpan_LegacyFormatMode.

    CLR Inside Out

  2. Tiếp cận các sự kiện bên trong lớp học, nơi chúng được khai báo sử dụng + = hoặc - = sẽ dẫn đến gọi thêm/xóa accessors tạo ra mà trả về void. Một số mã thậm chí sẽ không biên dịch trong 4.0.

    Chris Burrows Blog

  3. CAS bị phản đối và cho phép nó trở thành một vẫn cần phải sử dụng thiết lập đặc biệt trong cấu hình - NetFx40_LegacySecurityPolicy

Vì vậy, tôi tự hỏi là những gì thay đổi khác và là nó có thể tìm thấy ít nhất danh sách sơ bộ các thay đổi sẽ hoặc có thể phá vỡ chức năng hiện tại với bản phát hành .NET 4.0?

+0

Đây sẽ là một wiki tuyệt vời ... nhưng trong thời gian chờ đợi ... +1 bởi vì bạn chỉ có 78 điểm đại diện! – Armstrongest

+0

Có, hãy chuyển sang wiki cộng đồng - mục tuyệt vời cho điều đó! –

+0

Có lỗi được gửi cho Microsoft Connect về [giải pháp phương pháp ảo không trực quan với các tham số tùy chọn] (https://connect.microsoft.com/VisualStudio/feedback/details/555961/unintuitive-virtual-method-resolution-with-optional-parameters) –

Trả lời

31

Nhóm nghiên cứu ngôn ngữ tài liệu công bố các tài liệu riêng biệt cho C# và VB thay đổi phá vỡ:

VB: http://msdn.microsoft.com/en-us/library/cc714070%28VS.100%29.aspx

C#: http://msdn.microsoft.com/en-us/library/ee855831%28VS.100%29.aspx

tôi đã viết C# một và bao gồm hiệp phương sai và contravariance phá vỡ những thay đổi được đề cập bởi Eric Lippert, và sự kiện thay đổi được thảo luận bởi Chris Burrows. Ngoài ra còn có một số thay đổi đột phá xung quanh các tham số tùy chọn, loại interop được nhúng và suy luận kiểu nhóm phương thức.

Cập nhật:

hơn Một tài liệu hữu ích (từ nhóm tài liệu .NET): http://msdn.microsoft.com/en-us/library/ee941656%28VS.100%29.aspx

15

hiệp biến và chuyển đổi contravariant giới thiệu một số thay đổi vi phạm mơ hồ nhưng có thể khi biên dịch lại:

http://blogs.msdn.com/ericlippert/archive/2007/11/02/covariance-and-contravariance-in-c-part-nine-breaking-changes.aspx

C# nhóm giáo dục sử dụng biên dịch một danh sách các thay đổi vi phạm tiềm năng biết đến trong phiên bản mới của trình biên dịch, xem câu trả lời ở trên để biết chi tiết.

+3

Eric Lippert là một người đàn ông rất thông minh/hài hước. –

5

Cũng lưu ý rằng SmtpClient nay thực hiện IDisposable nên bây giờ bạn nên sử dụng một cái gì đó như thế này:

using (var smtpclient = new SmtpClient()) 
{ 
    smtpclient.Send(message); 
} 

Theo điều này page có thể có nhiều 'mứt ẩn' này bên trong khung công tác .NET 4.0. Và tác giả đề nghị tìm chúng bằng cách sử dụng FxCop trên mã của bạn.

0

Tôi vừa sửa lỗi trong ứng dụng sản xuất gần đây đã chuyển sang .NET 4.0.

dữ liệu ràng buộc có sử dụng thuộc tính lồng nhau được ném:

ArgumentException: Cannot bind to the property or column 'SomeProperty' on the DataSource.

Nó dường như là một known issue với một workaround. Tôi không thể tìm thấy nó trên bất kỳ danh sách chính thức nào và lỗi trên Microsoft Connect đã bị đóng là "Không thể lặp lại".

Thuộc tính lồng nhau được xác định trong chuỗi vì vậy tôi phải tìm kiếm tất cả chúng theo cách thủ công.