「タイプ[名前空間] .Globalを読み込めませんでした」


106

私の.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#intellisence ..には表示されません)。これは、解読するのが非常に難しいナッツであることがわかりました...

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

注2:cscを使用してvsプロンプトからコンパイルすると、okでコンパイルされます


アプリの他のページは機能しますか?これは、ウェブサーバーが1.1を実行するように構成されているが、アプリが2.0用にコンパイルされている場合に発生することがあります
正午

はい、「ターゲットフレームワーク」は2.0
gkdm

回答:


162

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

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

私の状況で私が見つけたのは、それらの両方(BinとBin / x86 / Debug)に出力されていたということです。ただし、一部のdllは例外であり、最も重要なものは、Webアプリケーションdllであり、Binから欠落しています。フォルダ。

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


13
また、VSを閉じてからもう一度開いてみてください。組み込みのデバッグサーバーを使用している場合は、別のWebサイトを実行している可能性があります。開く/閉じると、localhostポートが再登録されます。
BradLaney

1
私の場合、プロジェクトの出力をinetpub \ wwwroot \ myproject \ binに配置したかったのですが、myProject \ binを検索するようにiisexpressを構成しました。出力パスを変更するだけで問題は解決しました。
shindigo 2014

私の場合、含まれているはずの.dllがありましたが、何らかの理由で「ローカルのコピー」に設定されていませんでした。これにより、この回答で述べたのと同様のコンパイル問題が発生しました。
HockeyJ 2015

ありがとう、スタントーナ。これは私にとってうまくいきました、そしてちょうど私が家に帰るのに間に合いました。
ビルノーマン

3
プロジェクトの出力パスをbinフォルダーに変更すると、問題が解決しました。私の日を救ってくれてありがとう!
Tunahan 2017

18

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


私は何をすべきだと思いますか?
gkdm 2010年

1
.csファイルの名前空間を確認し、それがasaxファイルで宣言されている名前空間と同じであることを確認してください。私の疑いは、それらが異なるだろうということです...
PhilPursglove

その時はわかりません。今のところ提案できるのは、ILDASMを使用してアセンブリ内の名前空間の内容を再構築および確認することだけです。
PhilPursglove、2010年

ありがとう、これは私を助けた解決策でした。Resharperを使用して、ソリューション内のすべての名前空間を確認します。
レナード

MVC 5プロジェクト(問題ではない)で、プロジェクトの名前空間を変更しましたが、Global.asax(およびApp_Startフォルダー)を変更するのを忘れました。経験に関係なく、ばかげた見落としがまだあなたを引き付けることがあります。
Jason Snelders 2014年

15

私はASP .NET開発に不慣れで、同様の問題に直面しました。

クラスをクラスとして更新しましたが、partialうまくいきました。

public partial class Global : System.Web.HttpApplication

1
なぜ私のグローバルファイルがこれなしで終わったのか分かりませんが、これは私にとって問題でした、ありがとう!
銀座2015

9

Visual Studioを再起動したところ、エラーは発生しませんでした。


2
同じことが私のために働いた。開いているすべてのVisual Studioを必ず閉じてください。
alansiqueira27 2014

5

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

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

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

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


5
  1. Project Solutionを右クリックし、Batch Buildを選択します。
  2. 次に、[プロジェクト名]と[クリーンアンドリビルド]を選択します。

VS 2015でうまく機能しました。グローバルイベントを使用できます。私のGlobal.asaxファイルにはこの行があります

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

そして、私Global.asax.csAppCodeフォルダにあるクラスファイルを次のようにします

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

これが役に立てば幸い


3

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

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

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


3

私が持っているときに私は同様のエラーを経験しました

<clear/>

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

<assemblies>

私のWeb.configのタグ。IISの[既定のWebサイト]に展開されたアプリケーションで構成の継承を防ぐために、web.configにタグを挿入しました。


これは間違いなく私を正しい方向に向けました。結局、それは空のプレースホルダーだったので、親ディレクトリーに<clear />を入れました。実際の問題は、アプリケーションが参照するアセンブリをクリアして、アプリケーションアセンブリを読み込めなかったことにあると思います。
ダグランプ2014

私もこれを経験しました-リストをクリアするのではなく、選択したアセンブリを明示的に削除するとうまくいきました。
Arve Systad 2014年

2

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

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


2

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

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


2

残念ながら、これらはどれもうまくいきませんでした。私が見つけた修正は、開発、特にローカルマシンでのデバッグに固有のものでした。また、残念なことに、私が望んでいた方法で問題を実際に修正することはできませんが、あなたがあなたの機知に達している場合は、これにより再び実行される可能性があります。

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

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

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

私のために働いたのは:

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

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

うまくいけば、この答えが同じ問題を抱えている他の人を助ける...


1

プロジェクトを再構築または変更し、古いプロジェクトからファイルを移動する場合は、グローバルのInheritブロックを確認してください。私の場合、以前のプロジェクト/ソリューションはイントラネットと呼ばれ、イントラネットとして再作成しましたが、ファイルの上に移動すると、小文字が好きではありませんでした。ファイルの名前を大まかに調べてみてください。


1

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


GUIDをどのように変更しますか?
ドリュー

1

プロジェクトでこのエラーが発生するという同様の問題がありました。

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

しばらく時間を費やした後、クラスのエラーの可能性がある関数を疑っています。後で、特定の関数にコメントして、私の問題は解決されます。

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


1

この作品:最初に:ビジュアルスタジオで何を言ったとしても、IDEは常にファイルを確認します:ビン(Webアプリの場合はもちろん、私の場合はオフコース)したがって、ビジュアルスタジオに言ったときでもファイルをロードする特定のパス、ideは間違ったパスを探し続けます。だから私は:ビルド/構成マネージャーで出力タイプを変更します:リリース(以前は手動でもソリューションをクリーンアップしました)なので、ファイル.dllが作成されたら、プロジェクト/ソリューションの下の「bin」フォルダーに手動で移動しましたフォルダ。これが役立つことを願っています!!


1

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


1

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

極端な解決策のようですが、このスレッドで以前に言及されていないため、ここに含めようと思いました。

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

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


1

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

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

これでほとんどの人の問題が解決されるとは思えませんが、考えられる解決策のリストには載っていなかったので、追加したいと思いました。


1

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

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


これで解決しました。ありがとうございます。ただし、私の場合、Global.asaxをプロジェクトに追加しなかったので、将来的に他の人にも追加したいと思います。しかし、ここで述べたように、global.asaxおよびglobal.asax.csファイルは私のファイルシステムにありました。それらを削除すると、バグはなくなりました。
stackonfire 2018

1

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

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

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

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

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


0

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

再び起こり、今度はこの解決策がうまくいきました。


0

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


0

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

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

  • foo.aspx
  • foo.aspx.cs
  • foo.aspx.designer.cs
  • oof.aspx
  • oof.aspx.cs
  • oof.aspx.designer.cs

0

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

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

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


0

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


0

Visual Studioを使用している場合、アプリケーションをリリースモードで実行しようとしている可能性があります。デバッグモードに変更してみてください。


0

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

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


0

まあ私の場合VS 2017では、軽量のソリューションロードがこの問題の原因でした。私はそれを無効にしてVSを再起動し、ソリューションを再構築して問題が解決しました。


2
「軽量」ソリューションとは何ですか?
Fandango68

0

ちょうど私の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バージョン15.3.0 --Win 7 x64 Enterprise --New Project> Visual C#> Web> ASP.NET Web Application> Web Forms

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.