3

私は ac# プログラムで本当に奇妙な問題を抱えています:

メソッドを宣言するインターフェースと、このインターフェースを実装するクラスがあります。メソッド名を (インターフェイスと実装で) 変更すると、Visual Studio はコードをコンパイルしますが、コードを実行するとmethod not found例外が発生します。ターゲット dll を手動で削除し、プロジェクト/ソリューションを再コンパイルすると、すべて正常に動作します。

ただし、同じインターフェイスで宣言され、まったく同じクラスで実装される他のメソッドとプロパティが多数あります。そのうちの 1 つの名前を変更すると、すべて正常に動作します。

これが何であるか、誰にも考えがありますか?

 public interface INode{
    //...
    IEnumerable<INode> Ancestors();
    //...
 }
 public abstract class NodeBase : INode{
    // ...
    public IEnumerable<INode> Ancestors(){

    }
    // ...
 }
4

3 に答える 3

2

問題を解決しようとしているときに、UI プロジェクトから問題のアセンブリへの参照を削除してから、再度追加しました。この時点から、問題はなくなりました

悲しいことに、この非常に奇妙な問題の理由が何であったかを言うことはできず、今ではこの問題を調べる機会がありません。プロジェクト内で何かが壊れていたに違いありませんが、実際には 1 つのメソッド シグネチャのみが関係していたため (コード内の位置とメソッドの名前に関係なく)、これが何であるかは想像できません。

これまでに回答を投稿した人 (+1) に感謝し、私を解決策に導きました。この奇妙な行動を二度と見ないことを願っています!同じ問題が発生している場合: 発行元プロジェクトへの参照を再作成してみてください

于 2012-06-12T20:19:23.963 に答える
1

Build > Clean Solution/Project を試してみましたか?

于 2012-06-12T19:54:24.630 に答える
1

私はいつもこの問題を抱えています...

通常、保存してVSを閉じ、ソリューションをバックアップしてからビルドします。このプロセスは、しばらくの間、問題を寄せ付けません。

ソリューションを「クリーン」すると、ソリューションに関連付けられたコンパイル済みファイルと一時ファイルがすべて削除されます。これにより、次のビルドがゼロから行われることが保証されます。

問題はVSがソリューションを適切に構築していないことにあり、何かが「動かなくなった」と思います。また、この問題を解決するのに役立つ VS の拡張機能もあると思います。

この記事は必要なものに対して少し極端かもしれませんが、役に立つかもしれません: http://www.neovolve.com/post/2010/08/02/Cleaning-a-VS2010-solution-with-a-sledgehammer .aspx

于 2012-06-12T19:58:41.793 に答える