2015-09-10 16 views
8

.NET Micro Framework 4.3.2を対象とするいくつかのプロジェクトがあります。私はVisual Studio 2013でそれらを開発しました。私はVisual Studio 2015にアップグレードしましたが、今はコンパイルと実行に使用したのと同じコードで奇妙な問題が発生しています。`foreach`はいつ文字列で動作しなくなりましたか?

具体的には、私はこのエラーを取得開始しました:

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

、十分な公正、それはしていないようです。 しかしこれはコードを開発したときに機能しました。それはコンパイルされ、NuGetにプッシュされ、他のいくつかのプロジェクトで作業しているので、動作していなければなりません。

なぜ、これはVisual Studio 2015で機能しなくなったのですか?私は文字列の文字を繰り返し処理するためにこのイディオムを使用する多くのプロジェクトを持っていますが、私はそれらをすべて変更する必要はないと思っています... :(

+3

Can通常の.NETや.NET用の.NETで再現されているようですが、新しいコンパイラとすべてでアプリケーションパッケージを作成しています。結局のところ、マイクロフレームワークの問題になる可能性はありますか? – BoltClock

+0

確かに動作します:http://rextester.com/BQUY75614 、これはC#6の変更かもしれない – Jamiec

+0

それはwor .NET Framework 4,4.5、および4.6を使用してVS 2015でksを試してみてください。これはマイクロフレームワークの問題でなければなりません。 –

答えて

1

私は.netマイクロフレームワークapiをhere私はStringクラスにはGetEnumeratorメソッドがないことがわかりました。foreachループを作成するにはこのメソッドが必要です。私はビジュアルスタジオ2013のコードをどのようにコンパイルしたのでしょうか。

+1

ロズリン前のC#コンパイラには、文字列の特別な扱いがあり、IEnumerableを実装する必要はありませんでした。これはRoslynコンパイラの大きな変化です。この問題はGitHubに移行されました:https://github.com/dotnet/roslyn/issues/11387 Postelの法律上価値がある場合は、おそらく両方の場所で修正する必要があります。 –

関連する問題