web-dev-qa-db-ja.com

「タイプ[名前空間] .Globalをロードできませんでした」

.Net 2.0 Asp.net WebFormsアプリには、次のコードを含むGlobal.asaxがあります。

<%@ Application CodeBehind="Global.asax.cs" Inherits="MyNamespace.Global" Language="C#" %>

ただし、ビルドするとエラーが表示されます。

タイプ 'MyNamespace.Global'をロードできませんでした。

これは、MyNamespace名前空間(Global.asax.csファイルの背後にあるコードで定義されている)が、Global.asaxファイル内のコンパイラによって認識されていないためです(R#インテリジェンスでは表示されません)。これはひび割れにくい非常に難しいナットであることが判明しました。

注:Global.asaxとGlobal.asax.csは同じフォルダーにあります。

注2:vscプロンプトからcscでコンパイルすると、o.kがコンパイルされます。

105
gkdm

この問題を引き起こした1つの状況は、「ビルド構成」でビルドのプラットフォームを指定した場合です。

ビルドプラットフォームとしてx86を指定すると、Visual Studioはbin/x86/Debugをこのプロジェクトの出力ディレクトリとして自動的に割り当てます。これは、ASP.NETがアセンブリをBinフォルダーに出力することを期待するWebアプリケーションを除いて、他のプロジェクトタイプに対して完全に有効です。

私の状況で私が見つけたのは、それらが両方(BinとBin/x86/Debug)に出力されていたということでした。フォルダ。

これは明らかにコンパイルの問題を引き起こしたため、「グローバルタイプをロードできませんでした」という例外が発生しました。ソリューションをクリーンアップし、アセンブリを削除しても、以降のビルドに違いはありませんでした。私の解決策は、Webアプリのプロジェクト設定の出力パスを(bin/x86/Debugではなく)Binに変更することでした。

161
stantona

プロジェクトの名前空間を変更しましたか?プロジェクトプロパティダイアログで名前空間を変更したが、Visual Studioが既存のコードファイルのnamespace宣言を変更していない場合に、これが時々発生するのを確認しました。

17
PhilPursglove

私はasp .netの開発は初めてで、同様の問題に直面しました。

クラスをpartialクラスとして更新し、正常に機能しました。

public partial class Global : System.Web.HttpApplication
14
sri

Visual Studioを再起動しましたが、エラーはなくなりました!

9
Manoj Attal
  1. [プロジェクトソリューション]を右クリックし、[バッチビルド]を選択します。
  2. 次に、[プロジェクト名]と[クリーンアンドリビルド]を選択します。

VS 2015で正常に動作します。これで、グローバルイベントを使用できます。 Global.asaxファイルにはこの行があります

<%@ Application Language="C#" CodeBehind="~/App_Code/Global.asax.cs" Inherits="Global" %>

そして、AppCodeフォルダーにあるクラスファイルGlobal.asax.csを作成します。

public partial class Global : HttpApplication
{
    public Global()
    {
        //
        // TODO: Add constructor logic here
        //
    }
}

これが役立つことを願っています

5
parimal

ここに本用のもう一つがあります。これは、同じポート番号から複数のWebアプリケーションを起動したときに発生するようです。

基本的に、私は2つのブランチを用意しています。メインブランチとステージングブランチとリリースブランチがあります。ブランチをステージングブランチに切り替えたときに、同じポートアドレス構成を使用していることに気づいたので、それを変更することにしました。次に、この予約が別の構成済みアプリケーションと競合するという別の警告を受け取りました。 IIS Expressサーバーはそれについて敏感であり、何らかの理由で構成をブロックします。

3番目の影響を受けないポートを選択するだけで、この問題はポートを新しいディレクトリマッピングにマップするためになくなりました(私のブランチはディスク上で異なる場所にあります)。 Global.asaxが指す型名を変更しようとしたが、サーバーを再起動しても型名が変更されなかったため、これに気付きました。したがって、変更中のコードはIIS高速展開。

そのため、これであまりにも多くの睡眠を失う前に、Webプロジェクトの実行に現在使用されているIISポート番号を変更してみてください。

4
John Leidegren

Global.asax.csのビルドアクションを確認します。コンパイルに設定する必要があります。

ソリューションエクスプローラーで、Global.asax.csを右クリックし、[プロパティ]に移動します。 [プロパティ]ペインで、ビルドアクションを設定します(notデバッグ中)。

VS 2008は、デフォルトで.asax(.cs)ファイルを常に正しく追加するとは限りません。

3
apollodude217

私の状況では、プロジェクトのWebサイト/ Webアプリケーションの種類に関連していました。最近、MVCに移行し、Webアプリケーションに変更する必要がありました。

そのため、ソリューションは簡単でした。ソリューションエクスプローラーでWebサイトを選択してソリューションから削除し、ソリューションを右クリックして[追加]-> [既存プロジェクト](Webサイトではない)を選択し、再コンパイルしますウェブサイト。

2
Sergey

残念ながら、これらはどれも役に立たなかった。私が見つけた修正は、開発、具体的にはローカルマシンでのデバッグに固有のものでした。また、残念ながら、それは私が望んでいた方法で実際に問題を解決するわけではありませんが、あなたが機知の終わりにいるなら、これはあなたを再び走らせるかもしれません。

TL; DR:プロジェクトプロパティの[Web]タブの[サーバー]で、[ローカルIIS Webサーバーを使用]を選択します。住所・アドレス、

http://localhost/MyApp" 

既に入力されていました(IIS7、.NET 4.0があります)。最初に選択されたのは、「/」の仮想パスを持つ「Use Visual Studio Development Server」でした

私にとって本当に困惑しているのは、他に何も機能しなかったという事実であり、SOで見つけることができるすべての提案を行ったが、何も機能しなかった。奇妙なことに、古い.net 2.0(と思う)プロジェクトから追加された既存のファイルに似た新しいascxファイルを追加すると、エラーは(最後に見てから数か月経ったように)現れました。これにより、アプリケーション内からカスタムユーザー管理が可能になります。この新しいファイルを追加しようとするまで、それは長い間、美しく機能していました。追加してエラーを確認した後、私はすぐにすべての変更を元に戻しましたが、Global.ascxエラーは消えず、プロジェクト全体を吹き飛ばし、ソース管理から最新のものを再取得することさえしませんでした。

2
BrDaHa

古い投稿ですが、WebサイトプロジェクトからWebアプリケーションプロジェクトに変換しようとすると、このエラーが発生します。

この指示に従ってください リンク 。まだglobal.asaxエラーが発生しましたが、Visual Studioでプロジェクトを右クリックして[新しい項目を追加]を選択し、削除して再度追加するだけでした。 global.asaxファイルを追加すると、機能しました。

2
mjroodt

ソリューションをVS2003からVS2010に変換しましたが、Webアプリケーションプロジェクトの変換に問題がありました。

私はまったく同じ問題を経験しましたが、答えはどれもうまくいきませんでした。

私のために働いたのは:

  • ソリューションを右クリックして、構成マネージャーを選択します
  • [アクティブソリューション構成]ドロップダウンリストで各構成を確認しました。
  • [ビルド]チェックボックスをオンにして、Webアプリケーションをビルドに含めました。

変換中に発生した問題により、何らかの理由でビルドからWebアプリケーションプロジェクトが削除されたようです。

うまくいけば、この答えが同じ問題を抱えている他の誰にも役立つことを願っています...

2
mezoid

持っているときに同様のエラーが発生しました

<clear/>

の子(最初の子)としてのタグ

<assemblies>

Web.configのタグ。 IISの「既定のWebサイト」の下にデプロイされたアプリケーションの構成の継承を防ぐために、web.configにタグを挿入しました。

2
jasonjonesutah

私のためのこの作品:まず第一に:Visual Studioに何を言ったとしても、ideは常にファイルを探します:bin(私の場合はWebアプリとコース外)ので、Visual Studioに言ってもファイルをロードする特定のパス、ideは間違ったパスを探し続けます。だから私は変更します:Build/Configuration Managerの出力タイプをRelease(以前は手動でソリューションをクリーンアップします)ので、ファイル.dllが作成されたときにプロジェクト/ソリューションの下の「bin」フォルダに手動で移動しましたフォルダ。これが役立つことを願っています!!

1
galimatias

プロジェクトを再構築または変更し、古いプロジェクトからファイルを移動する場合は、グローバルの継承ブロックを確認してください。私の場合、以前のプロジェクト/ソリューションの名前はイントラネットであり、イントラネットとして再作成しましたが、ファイルを移動したとき、小文字(duh)が好きではありませんでした。ファイルの名前の一般的なルックスルーを行うだけです。

1
archangel76

私の場合、ターゲットプロセッサ(x64)が原因で、x86に変更してプロジェクトをクリーンアップし、VS(2012)を再起動してプロジェクトを再構築しました。それはなくなった。

1
notmrkyle

アセンブリのGUIDを変更します。これにより、多くの多くの問題が修正されました。

1
Nathan M

プロジェクトでこのエラーが発生した場合、同様の問題が発生しました。

“Could not load type [Namespace].Global
Error in Line 1   etc etc

しばらく時間を費やした後、Class..laterでエラーが発生している可能性のある関数が、特定の関数が問題を解決したとコメントしていると思われます。

Visual Studioがデバッグ時にその特定のエラーを表示しなかった理由がわかりません。しかし、このエラーはクラスファイルのエラーが原因で発生する可能性があります。

1
panky sharma

最近この問題に遭遇したとき、私はここで言及したすべてを試しましたが、役に立ちませんでした。髪を引き裂いた後、entireコードベース(はい、かなり必死です!)を削除してから、コードリポジトリからすべてを再ダウンロードすることにしました。これを行った後、すべてがもう一度うまくいきました。

極端な解決策のように思えますが、このスレッドでこれまで言及されていなかったので、ここに含めると思っただけです。

(この問題に遭遇したのは、ホストマシンに登録する必要のあるコンポーネントからGlobal.asaxが継承されていたときです。これが見つからなかったため、同じ問題が発生しました)。

TL; DR;このスレッドのすべての答えがうまくいかない場合は、コードベース全体を削除してから再ダウンロードしてみてください!

1
Ben Smith

私の場合、Global.asaxをWCFプロジェクトに追加して試してみましたが、削除することにしました。ソリューションエクスプローラーから削除しましたが、まだフォルダー内にあるため、パイプラインはそれを見つけてこのエラーを引き起こしていました。

Global.ASAXとGLobal.asax.csをファイルシステムから削除したところ、エラーは解決しました。

1
Beans

私はこの問題に何度か遭遇し、それぞれの場合にコンピューターを再構築するか、新しいコンピューターに切り替えました。私の最初のステップ(マシンの更新とVisual Studioのインストール以外)は、プロジェクトをGitから取得してテストすることです。

コンパイルする前にローカルコードにアクセスしようとしたため、毎回このエラーが発生しました。 bin/buildフォルダーを無視するGitとSubversionのセットアップがあるので、リポジトリからプルした後、Nugetから必要なパッケージをプルするビルドを実行するのを忘れました(Git/SVNはそれらも無視するため)アプリを実際に実行するために必要なDLL。

これでほとんどの人の問題を解決できるとは思いませんが、潜在的な解決策のリストには表示されなかったので、追加したいと思いました。

1
Capt. Rochefort

ソリューションを再構築し、成功せずにASP.NET一時ファイルをクリアしようとしました。
しかし、実行後IISRESETエラーは消えました。

Update:1か月後に再び同じ問題が発生しました。 MyWebsite.DLLはbinフォルダーに存在しますが、一時ASP.NETファイル(C:\ Windows\Microsoft.NET\Framework64\v4.0.30319\Temporary ASP.NET Files)には存在しないことに気付きました。私はいくつかのことを試してみましたが、これと Global.asaxの「パーサーエラーメッセージ:タイプをロードできませんでした」 質問(実際に自分の答えを忘れていました)がエラーが消えました再びIISRESETの後にのみ

0

ソリューションのプロパティで構成マネージャーに移動します。次に、すべてのプロジェクトとビルドを確認します。これは問題になりません。

0
Matthew Hart

ほぼ20年間開発ゲームに携わってきたこの栗は、複数のプロジェクトで私を悩ませ続けています。

そのため、今日、別のプロジェクトに対してこの同じ問題が再び発生している間に、さらに調査することにしました。これはBinフォルダーの場所に関連していると思います。具体的には、binフォルダーの出力パスです。

私にとって、IISを介して実行/デバッグするように構成された単純なサービスベースのWebアプリケーションの場合、出力パスをbin\debugからbin \に変更して解決しました

プロジェクト>プロパティ>ビルド>出力パス

これが役立つことを真剣に願っています。

0
timkly

Prodサーバーのみにデプロイするときにこの問題が発生しました。私の他の環境では動作します... binフォルダーの内容を削除してから再公開すると、その後動作します。

0
Raphael

私は同じくそった問題に困惑しました。 global.asaxを削除しようとしました(追加する前にVS2010を閉じました)。プロジェクト/ソリューションをクリーンアップし、SOスレッドで他の人のために働いていたWebアプリケーション構成やその他の変更をチェックしました。最終的にソリューションをクリーンアップし、bin/objフォルダーを削除し、実行中のVS2010開発サーバーをすべて停止し、すべての変更を元に戻し、アプリケーションが再び実行されていることを確認しました。私は同じことをやり直し、今ではうまく機能しています。

再び起こり、今回は this 解決策が私のために働いた。

0
rageit

誤って「Chrome」をデバッグ用のデフォルトブラウザに設定すると、この問題が発生しました。 「IE」に戻すと、問題はなくなりました。なぜかわからない...


編集:私はこの答えを削除しようとしていました、それについて確信が持てなかったので、その後、私は再び問題を抱えていました。 Chromeでのブラウジングに切り替えてからIEに戻り、停止しました!何ができるの!?

0
Fedor Steeman

ちょうど私の2セントを追加したかった。私は同じエラーを受け取っていたので、すべての提案を試してみました。私の状況はおそらく異なるでしょうか?

自動生成された「AssemblyInfo.cs」ファイルに余分なスペースが含まれていたため、Webアプリを(デバッグ経由で)起動できませんでした。ファイルは次のようになりました。

[Assembly: AssemblyTitle("WebApplication2")]
[Assembly: AssemblyDescription("")]
[Assembly: AssemblyConfiguration("")]
[Assembly: AssemblyCompany("

            ")]
[Assembly: AssemblyProduct("WebApplication2")]
[Assembly: AssemblyCopyright("Copyright © 

             2017")]
[Assembly: AssemblyTrademark("")]
[Assembly: AssemblyCulture("")]

AssemblyCompanyとAssemblyCopyrightのスペースを削除した後、プロジェクトをビルドして起動できました。

次の環境で観察されます:--Visual Studio 2017 Community version 15.3.0 --Win 7 x64 Enterprise --New Project> Visual C#> Web> ASP.NET Web Application> Web Forms

0
raydlevel5

私の場合、それは解決するためにIISと同じポートを指しているIISExpressでした

C:\Users\Your-User-Name\Documents\IISExpress\config\applicationhost.config

ポートを検索すると、削除するかコメントする必要がある<site>...</site>タグが見つかります

0
Mo Hrad A

私の場合、VS 2017では、軽量なソリューションの負荷がこの問題を引き起こしていました。私はそれを無効にしてVSを再起動し、ソリューションを再構築して問題を解決しました。

0
Siddharth Kumar

Visual Studioを使用している場合は、おそらくリリースモードでアプリケーションを実行しようとしているので、デバッグモードに変更してみてください。

0
sham

プロジェクトに含まれていないファイルをディスクから削除(複製)する必要がありました。重複は、名前の変更に失敗したことが原因のようです。ファイル名は異なっていましたが、同じコードです。

すべてのoof。*ファイルを削除した後、スキャンできました。

  • foo.aspx
  • foo.aspx.cs
  • foo.aspx.designer.cs
  • oof.aspx
  • oof.aspx.cs
  • oof.aspx.designer.cs
0
Eric Rohlfs

それは聞こえるかもしれないほど愚かな。これが私がやったことです。

私のプロジェクトは4.6.1バージョンを対象としていました。ターゲットバージョンを4.6.2に変更しました。それを構築しました。 objおよびbinフォルダーを削除しました。 &もう一度バージョンを4.6.1に変更しました。ビンゴ!!

0