web-dev-qa-db-ja.com

タイプまたは名前空間IAppBuilderが見つかりませんでした(ディレクティブ参照またはアセンブリ参照を使用していない)

私はSignalR 2.0.1を使用し、Owin Startupクラスを使用してマッピングしたAsp.Net MVC 4アプリケーションで作業しており、最初は正常に機能していました。

アプリを再構築しようとすると、型が名前空間IAppbuilderが見つかりませんでしたと突然言いました。

以下は私のスタートアップクラスです

using Microsoft.Owin;
using Owin;
using WhiteBoardApp;

namespace WhiteBoardApp
{
    public class Startup
    {
        public void Configuration(IAppBuilder app)
        {
            app.MapSignalR();
        }
    }
}

Owinパッケージもインストールしましたが、何らかの理由でOwin Startupクラスが見つからなかったため、通常のクラスを追加し、必要なすべての参照を含めました。どこでミスをしているのかわかりますか

62
DoIt

パッケージ管理コンソールを使用してみてください

Update-Package Owin -Reinstall
132
scottt732

私は同様の問題を抱えていました。しかし、代わりにOwin、問題はMicrosoft.Owinを引き起こしていました、明らかに

Update-Package Owin -Reinstall

動作しませんでした、Update-Package Owin

しかし

Install-Package Microsoft.Owin

おかげでうまくいきました。

22

IAppBuilderインターフェースは、Owinパッケージにあります。クラスファイルに参照を追加するだけです。

owinを使用。

そして再構築します。プロジェクトがこれを選択します。

VSがこれを選択しなかった理由はわかりませんが、選択しませんでした。この参照をプロジェクトに追加すると、すべてが適切に配置されました。

7
chris smith

プロジェクトのビルド中に同じ問題が発生しました。私の問題を解決するのに役立つ手順は次のとおりです。

  1. Solution Explorerに移動して、プロジェクトを探します
  2. プロジェクトの下で、References;を展開します。問題のある参照に関する警告が表示されるはずです
  3. Referencesを右クリックしてManage NuGet Packagesを開きます
  4. 問題のある参照の名前、つまりMicrosoft.Owinを検索します。ロード後、すでにインストールされていることが示されます(インストールされていますが、正しくインストールされていません。ステップ2でプロパティを確認する>バージョンは0.0.0.0を示します)
  5. Force uninstall, even if there are dependencies on itを確認してください
  6. アンインストール
  7. インストール
  8. プロジェクトをビルドして実行する

問題点

パッケージフォルダーに既に存在するため、Microsoft.Web.Infrastructureをインストールできません。ロールバック...

  1. プロジェクトフォルダーに移動し、パッケージを探します
  2. 問題のあるパッケージ、つまりMicrosoft.Web.Infrastructureを見つけます
  3. フォルダーを削除する
  4. ステップ7から再開

代替案

この種の問題を解決するために読んだ代替案を以下に示します。

  • プロジェクト/ソリューションのクリーンとリビルド
  • Visual Studioを再起動します
  • PCを再起動

幸運を。

3
iwillnot

何らかの理由で私のVisual Studio 2013は、参照パスが存在することを認識しませんでした。追加されたすべてのパッケージについて、参照の前に黄色の感嘆符が表示されました。 ../packages/をチェックしましたが、すべてのファイルが存在し、正しいパスを参照する.csprojファイルも開きました。

ソリューションを閉じて開くとかなり多くのエラーが返され、ソリューションに含まれるプロジェクトを読み込むことができませんでした。

Visual Studio 2013を再起動すると、原因不明の理由で1日が節約できました。

2
Crypth

次のF#での使用は、IAppBuilderを非表示にする問題を提示します。 Owin名前空間を提供するOwin.dllが参照されていても、Owinの規定は不完全なSystem.Web.Http.Owin参照として解釈されていたことがわかります。

open System.Net.Http
open System.Web.Http
open Microsoft.Owin
open Owin

この問題は、使用法を次のように再配置することで解決しました。

open Microsoft.Owin
open Owin
open System.Net.Http
open System.Web.Http

...確かに、これはF#コンパイラに固有のバグである可能性があり、名前の競合はC#などでより適切に処理されます。

1
George

私の場合、プロジェクトフォルダーとvsソリューションファイル(.sln)の場所を移動しました。プロジェクトの再追加が完了すると、ソリューションレベルにパッケージフォルダーがあり、プロジェクトフォルダーに残りました。このようにして、そのプロジェクトでは、.csprojファイル内の相対パッケージフォルダーリンクが台無しになりました。

このスレッドのnugetパッケージマネージャーに関する再インストールまたはその他のヒントは役に立ちました。 gitソースコードのdiffでいくつかのパッケージを再インストールした後、csprojファイル内でパッケージフォルダーのパスが変更されていることに気付きました。

<HintPath>packages\Microsoft.Owin.4.0.1\lib\net45\Microsoft.Owin.dll</HintPath>

<HintPath>..\packages\Microsoft.Owin.4.0.1\lib\net45\Microsoft.Owin.dll</HintPath>

したがって、同じ問題で実行し、多くのナゲットパッケージがある場合、ソリューション全体を閉じ、vscodeなどのテキストエディターでcsprojファイルを開き、検索と置換で相対リンクを修正する方が簡単な場合があります。次に、VSでソリューションを保存、閉じ、再度開き、nugetパッケージを復元します。これでうまくいくはずです。 (いずれにせよ、プロジェクトレベルでローカルパッケージフォルダーを削除する必要があります。これにより、適切なパッケージが取得されない場合、プロジェクトは本当に失敗します。)

0
AIsmaili