質問: System.Linq.Dynamicを使用します 。 次のように始まる、指定した`Dynamic.vb`ファイルを追加しました。 ``` Option Strict On Option Explicit On Imports System.Collections.Generic Imports System.Text Imports System.Linq Imports System.Linq.Expressions Imports System.Reflection Imports System.Reflection.Emit Imports System.Threading Imports System.Runtime.CompilerServices Namespace System.Linq.Dynamic Public Module DynamicQueryable ``` 私の(VB.NET)ソリューションに。 これで、Visual Studioはプロジェクトファイルで`System.XXX`参照`System.XXX`ものを認識しなくなり、 `Global.System.XXX`に変更することを提案します`Global.System.XXX` !ここに画像の説明を入力してください Dasでしたか、それをどのように管理しますか?
回答: 名前空間の非表示が行われているようです。 VB.NETプロジェクトには、デフォルトでプロジェクトの名前に設定されているルート名前空間が存在します。これは、 **プロジェクト->プロパティ->アプリケーション->ルート名前空間**から確認でき**ます** 。 クラスがネームスペースを明示的に指定すると、ルートネームスペースがプレフィックスとして付加されます。たとえば、ルート名前空間が`RootNs`とします。 `DynamicLinq.vb`ファイルは`System.Linq.Dynamic`名前空間を指定しているため、これは実際には`RootNs.System.Linq.Dynamic`です。これにより、通常の.NET `System`名前空間が非表示になります。そのため、Visual Studioは、すべての名前空間に`Global`をプレフィックスとして付けるように求めます。 C#ではこの概念が異なるため、誰かがC#バージョンの`DynamicLinq`使用したときにこの問題が発生することはないと`DynamicLinq`ます。 これを修正するには、いくつかのオプションがあります(1つ選択してください)。 1. `DynamicLinq.vb`から名前空間宣言を削除し、 `System.Linq.Dynamic`を使用するそのファイル内のオブジェクトからすべての完全修飾を削除します。つまり、 `System.Linq.Dynamic.Signature`は`Signature`ます。他の場所で使用するには、 `Imports System.Linq.Dynamic`追加し`Imports System.Linq.Dynamic` 。 2. ルートネームスペースを空白にして、Project / Properties / Applicationから削除します。そうすることで、プロジェクトはC#に近くなり、すべてのクラスで名前空間を明示的に指定する必要があります。他の場所で使用するには、 `Imports System.Linq.Dynamic`追加し`Imports System.Linq.Dynamic` 。 3. ルート名前空間を保持し、 `DynamicLinq.vb`の名前空間を変更するだけ`DynamicLinq.vb` 。たとえば、これを`NewNs.Linq.Dynamic`に変更し、 `NewNs.Linq.Dynamic`ように完全修飾を`Signature`から削除します。他の場所で使用するには、 `Imports RootNs.NewNs.Linq.Dynamic`追加し`Imports RootNs.NewNs.Linq.Dynamic` ( `RootNs`プレフィックスに注意して`RootNs` )。