2015-09-10 25 views
8

.NET Micro Framework 4.3.2'yi hedefleyen çok sayıda projem var. Visual Studio 2013'te geliştirdim. Visual Studio 2015'e yeni yükselttim ve şimdi derlemek ve çalıştırmak için kullanılan aynı kodda tuhaf sorunlar alıyorum."foreach" ne zaman dizeleri üzerinde çalışmayı bıraktı?

Özellikle, bu hatayı almaya başladım:

CS1579 foreach statement cannot operate on variables of type 'string' because 'string' does not contain a public definition for 'GetEnumerator'

Ve yeterince adil, o görünmüyor. Ancak bu, kodunu geliştirdiğimde çalıştı. Derlenmiş, NuGet'e aktarılmış ve diğer birçok projede çalışmış, bu yüzden işe yaramış olmalı.

Peki, bu neden Visual Studio 2015'te çalışmayı bıraktı? Bir dizede karakterler arasında yinelemek için bu deyimi kullanan birçok projem var, umarım hepsini değiştirmem gerekmeyecek ... :(

+3

Yeni derleyici ve her şey ile birlikte düzenli bir .NET veya .NET için Windows Mağazası uygulamaları projesinde çoğalmış gibi görünmüyor.Peki her şeyden önce bir Mikro Çerçeve sorunu olabilir .. – BoltClock

+0

Kesinlikle işe yarar: http://rextester.com/BQUY75614 Bu C# 6 – Jamiec

+0

Bu bir değişiklik olabilir .NET Framework 4, 4.5 ve 4.6 ile VS 2015'te ks benim için iyi. Bu bir mikro çerçeve sorunu olmalı. –

cevap

1

here'dan .net mikro çerçeve api'yi inceledim ve String sınıfının GetEnumerator yöntemine sahip olmadığını ve foreach döngüsünün çalışmasını sağlamak için bu yöntemin gerektiğini bildiğimi fark ettim.Yalnızca Visual Studio 2013'deki kodu nasıl derlediğimi bilmiyorum.

+1

Önceden Roslyn C# derleyici dizeleri için özel bir tedavi vardı ve IEnumerable uygulanması gerekli değildi. Bu Roslyn derleyicisindeki bir kırılma değişikliğidir. Sorun burada GitHub'a taşındı: https://github.com/dotnet/roslyn/issues/11387 Postel yasasında herhangi bir değeri varsa her iki yerde de muhtemelen düzeltilmelidir. –

İlgili konular