2012-06-06 19 views
8

Khi cố gắng xây dựng trong MonoDevelop với Mono cho Android, tôi nhận được lỗi này. Theo gỡ lỗi nó không nằm trong mã của tôi vì vậy im trái không biết gì. Bất kỳ ý tưởng?Lỗi MSB4185: "System.Globalization.CultureInfo" chưa được kích hoạt để thực thi

Lỗi MSB4185: Hàm "CurrentUICulture" trên loại "System.Globalization.CultureInfo" chưa được kích hoạt để thực thi. (MSB4185)

+0

Tôi cũng gặp vấn đề này. Bạn có đang chạy Windows 8 bằng bất kỳ cơ hội nào không? Tôi tự hỏi nếu nó có thể phải làm gì với điều đó. –

+0

Tôi cũng thấy điều này trên Windows 8 RP. Xem này: https: //bugzilla.xamarin.com/show_bug.cgi? Id = 5597 –

+0

Điều này có liên quan đến việc cài đặt .NET Framework 4.5 không? – Dominique

Trả lời

1

Sau khi gỡ cài đặt .NET Framework 4.5 RC khỏi máy tính Windows 7 của tôi, lỗi này biến mất. Tất nhiên đảm bảo bạn có thời gian chạy .NET hợp lệ sau khi bạn gỡ cài đặt 4.5.

6

Tôi sở hữu MSBuild (và mã này). Đó là một lỗi có nguồn gốc trong tập tin microsoft.csharp.targets, như thông báo lỗi có thể nói. Trong đó là một chức năng hữu:

$ ([System.Globalization.CultureInfo] :: CurrentUICulture.Name)

gì lỗi nghĩa là nó nghĩ rằng chức năng này không có trong "danh sách an toàn" MSBuild của . Đây là những chức năng được chọn không có tác dụng phụ. (Nếu bạn muốn sử dụng bất kỳ hàm nào, bạn phải có biến môi trường MSBUILDENABLEALLPROPERTYFUNCTIONS = 1).

Tôi thực sự không biết tại sao điều này sẽ xuất hiện trừ khi bằng cách nào đó bạn đang sử dụng 4.5 microsoft.csharp.targets với 4.0 microsoft.build.dll (không có trong danh sách an toàn). Tôi chưa nhận được báo cáo về điều này ngoại trừ kết nối với Monodevelop.

Xin lỗi về sự ngây thơ của tôi, nhưng tôi giả sử Monodevelop đang sử dụng Microsoft .NET Framework với Microsoft MSBuild và không phải là reimplementation về điều đó.

Dan

+0

Gỡ cài đặt 4.5 sẽ "khắc phục" điều này vì microsoft.csharp.targets sẽ quay lại phiên bản 4.0. Tất nhiên, bạn không còn 4.5 nữa. – dan

+0

Nó cũng xảy ra với tôi rằng bạn có thể xác minh trivially rằng microsoft.csharp.targets và microsoft.build.dll được đồng bộ bằng cách xây dựng một dự án C# với msbuild.exe. Điều này giả định rằng Monodevelop không tải các bản sao khác nhau từ một số vị trí tùy chỉnh, tất nhiên. – dan

+2

Ugh, tôi đã tìm ra được vấn đề. Rõ ràng bạn đang sử dụng OM cũ (từ microsoft.build.engine.dll) chứ không phải là 4.0+ OM (từ microsoft.build.dll). Chúng tôi đã reshipped OM cũ cho compat, chỉ trong trường hợp bất cứ ai (như MonoDevelop rõ ràng) đã sử dụng nó. msbuild.exe 4.0+ và VS2010 + tất nhiên sử dụng OM mới, do đó, cũ là tương đối chưa được kiểm tra. Và iff bạn sử dụng OM cũ, trên 4.0 hoặc 4.5 dự án, với 4.5 .NET framework được cài đặt, và thuộc tính BuildingInVisualStudio = true (mà tôi đoán các bộ Monodevelop) bạn nhận được lỗi này. – dan

5

Các giải pháp làm việc đối với tôi là thế này:

Mở CMD và chạy lệnh này vào nó: setx MSBUILDENABLEALLPROPERTYFUNCTIONS 1

Một giải pháp tôi nghĩ là có sẵn được cài đặt Mono Runtime và thiết lập nó như là của bạn thời gian chạy CLR mặc định từ Tools -> Options -> .NET Runtimes.

+0

tùy chọn CMD hoạt động hoàn hảo cho tôi –