5

別の開発者が作成した VB.Net ソリューションがあり、ビルド マシンでコンパイルしようとしています (彼らのマシンでコンパイルされます) が、プロジェクトの 1 つで次のようなエラーが表示されます。

Imyinterface名前空間があいまいanamespaceassemblyです。

私は成功しなかった:

  • 明らかなエラーがないか参照を調べた
  • 問題のアセンブリを削除して再度追加しました
  • システムで同じ dll を検索しました
  • 元の deve の src (.v ソース管理バージョン) をコンパイルしようとしました
  • ildasm.exeでアセンブリを調べました

私は通常 C# でコーディングしており、(少なくともこの形式では) このエラーを見たことがありません。これは VB.Net 固有のものではありませんが、参照を追加/表示するための UI がわずかに異なるため、VB.Net が何か違うことをするのではないかと考えました。参照付き。

また、別のマシンでコンパイルしようとしましたが、正常にコンパイルされました。だから私はそれがビルドマシンに何かあると思いますが、私にはわかりません。プロジェクトによって何らかの形で参照されていない他の競合するアセンブリ、それは可能ですか??

何か案は?

4

4 に答える 4

6

同じ参照の 2 つのバージョンがある場合は、参照を確認してください (例: Microsoft.ReportViewer.Webforms バージョン 10.0.0.0 と Microsoft.ReportViewer.Webforms 8.0.0.0)。このエラーが発生します。最も古いものを削除してください。私はいつもこれを自分自身にしています。

于 2013-11-19T17:40:05.763 に答える
2

このエラーにはいくつかの原因が考えられます。VB では、C# で慣れ親しんだ名前よりも多くの名前をクラス指定なしで使用できることに注意してください。また、VB では大文字と小文字は区別されないため、衝突の可能性が高くなります。

実際の競合する問題が見つからない場合でも、C# の場合と同じ方法でこれを解決できます。Importsステートメントで名前を変更します。

Imports IM = yourAssembly.Imyinterface

次に、の使用をImyinterfaceに置き換えるようにコードを変更しますIM

注: エラーが特定の行を指していない場合は、競合が発生している可能性があります。通常、完全なクリーン ソリューションとリビルドは非常に役立ちますが、ファイルの動作不良 (つまり、別のエラー) が原因で、明確なソースなしでこのエラーが最初に表示されることがあります。最近の変更を、それが機能した場所にロールバックしてみてください。

また、別のマシンでも機能したと言っています。マシンに異なるバージョンの MS Visual Studio または .NET がインストールされている可能性があります。正確なバージョンを確認して比較します。

于 2010-01-07T00:14:58.507 に答える
0

回答ありがとうございます。それぞれ試してみましたが、まだ問題がありました。

元の質問から除外した情報の 1 つは、VB.net プロジェクトが VB6 プロジェクトからのアップグレードであるということでした。当時は関係ないと思っていました。

さらに調査した結果、ビルド マシンは VB6 プロジェクトのビルドにも使用されました。そこで、vb6 dll で「reg32 /u」を実行したところ、VB.net の問題が修正されたようです。

私はVB6 dllを参照していなかったので、なぜこれが修正されたのか正確にはわかりません.vb.netプロジェクトを混乱させるレジストリのあいまいなエントリと関係があると思います.

于 2010-01-08T20:24:29.860 に答える