質問

私が明確にしないこと、C#とVB.NET(主にポインターの使用)の違いがあることを理解していますが、両方に共通CLRがある場合、XNA(たとえば)はC#でのみ動作しますVB.NETではなく、またはVisual StudioへのアドインがVB.NetではなくC#を対象としており、言語拡張機能が両方で機能することを示しています

それが明らかな質問である場合は申し訳ありませんが、私は尋ねると思いました

役に立ちましたか?

解決

CLRはさまざまなプラットフォームに移植されていますが、すべてが同じではありません。 XBox 360 CLR、たとえば、にはReflection.Emitがありません。完全なCLRが行うすべてのIL操作。したがって、別のコンパイラーは、完全なCLRでは合法ですが、Compact CLRでは違法なILコードを出力する場合があります。

もう1つの問題は、クラスライブラリの可用性です。完全なBCLには、 Microsoft.VisualBasic 名前空間が含まれています。 VB.NETコンパイラによって自動的に参照されます。これには、 VB6互換性関数、< href = "http://msdn.microsoft.com/en-us/library/microsoft.visualbasic.myservices.aspx" rel = "nofollow noreferrer">私の名前空間の機能、およびいくつかのコンパイラヘルパー関数であり、一般にVBと呼ばれます。 NETランタイム。

CLRが移植されるたびに、特定のアセンブリが移植されますが、他のアセンブリは移植されません。 XBoxの場合、Microsoft.VisualBasicは移植されていません。これは、その名前空間から何も参照できないことを意味します。互換性またはMy名前空間を参照しないのはかなり簡単ですが、コンパイラサービスは、明示的に呼び出すことなく、コンパイルされたILに挿入できます。

VB.NET 8では、文書化されておらず、サポートされていない-novbruntimeref vbc.exeに切り替えて、Microsoft.VisualBasic.dllを参照しないようにします。残念ながら、これは奇妙なコンパイラエラーを引き起こすことがあります。 VB.NET 9では、ドキュメント化され、サポートされ、/ vbruntimeに名前が変更されました

3番目のケースは、アドインとVisual Studioのサポートです。これは、各言語のテンプレート、コード生成などをサポートするかどうかに関して、個々のパッケージ次第です。 それはいくつかのサードパーティがXNA用のVB.NETテンプレートをリリースしたと信じています公式にはサポートされていません

一番下の行は、技術的な懸念(CLRポート、BCLの可用性、コンパイラーのIL出力)とサポート(他の言語のテスト、資金提供、アドイン)が混在していることだと思います。

他のヒント

言語サポートを定義するのはツールセットです。たとえば、XNAはすべての作業をC#で行い、サポートのみを提供していました。 VB.NETでアプリを作成し、コマンドラインから手動でコンパイルすることもできます。アプリが違法なIL(XNAがサポートしていないオペコード)にコンパイルしない限り、引き続き実行されます。主な問題はリソースです-彼らはすべての言語の完全な開発とテストを行う人材を持っていないので、彼らは1つを選びました。

すべてのアカウントからVB.NETとC#は、CLRに関しては99.9999と同等です。しかし、あなたに噛みつくかもしれない若干の違いがあります。また、Microsoftのブログで、CLRでできること(VB.NETまたはC#で(まだ)プログラムできないものがあり、ILで行う必要がある)を読んだことを覚えています。本当に興味深い。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top