2011-07-01 10 views
2

この問題は完全に悩まされています。いくつかのマスターページを含むASP.NET Webアプリケーションがあります。今朝私は新しいマスターページを追加し、それをASPXに接続しました。しかし、私はエラーでYSODを得続ける:まずマスターページのコードがアセンブリにコンパイルされていません

Parser Error Message: Could not load type 'Blah.UI.Web.WebForms.Master.LoggedIn'. 

Source Error: 

Line 1: <%@ Master Language="C#" 
      MasterPageFile="~/WebForms/Master/IFrameContent.Master" 
      AutoEventWireup="true" CodeBehind="LoggedIn.master.cs" 
      Inherits="Blah.UI.Web.WebForms.Master.LoggedIn" %> 

私はちょうどマスターページディレクティブで何かを間違って綴っただろうが、私はチェックしましたし、ダブルチェックし、それはしていないようだと思いましたそれである。

「タイプをロードできませんでした」ということから、DotPeakを使用して、コードビハインドクラスが実際にアセンブリにコンパイルされていることを確認しました。オリジナルのマスターページはありますが、今朝追加したものはありません。

だから私は何とかそれをどうにかして構築したと思った(私はすでに完全に再構築しようとしていた...しかし、もう一度やり直してもよい)。まだ見つかっていない。

私は、ソースコントロールの以前のバージョンに対するcsprojファイルをチェックし、私は新しいコードがあることがわかります。

<Compile Include="WebForms\Master\LoggedIn.master.cs"> 
    <DependentUpon>LoggedIn.master</DependentUpon> 
    <SubType>ASPXCodeBehind</SubType> 
</Compile> 
<Compile Include="WebForms\Master\LoggedIn.master.designer.cs"> 
    <DependentUpon>LoggedIn.master</DependentUpon> 
</Compile> 

...と後で同じファイルに...

<ItemGroup> 
    <Content Include="WebForms\Master\LoggedIn.master" /> 
</ItemGroup> 
私は、Visual Studioのプロパティを見ると

の.csファイルは言う:

  • ビルドアクション:ちょうど仕事をマスターページ用のCSファイルのようなものです

をコピーしないでください:出力ディレクトリから

  • コピーをコンパイルします。

    私は今完全に困惑しています。なぜ私はこれが働いていないか、または私が何かを見逃してしまったのかどうかを知りません。

    UPDATE

    私はちょうど私たちのCIサーバが使用して生成アセンブリがクラスの後ろに新しいマスターページのコードが含まれていない同じMSBUILDスクリプトを使用して、コマンドラインでビルドを実行しました。だから、プロジェクトファイルには何の問題もないようです。

    次に、Visual Studio出力のファイル日付を確認しました。 Webアプリケーションプロジェクトのアセンブリは2日経っていますが、他のアセンブリは最新です...私は現在、Visual Studioが特定のプロジェクトを適切に構築していない理由を判断しようとしています。チェックするものの追加のアイデアは感謝して受け取ります。

    UPDATE 2

    Visual Studioが後にすべてのファイルを作成している...それだけで間違ったディレクトリに入れています。 Webアプリケーションのプロジェクトの下で、binといくつかはbin/x86/Debugにいくつかのプロジェクトファイルを入れています。また、いくつかのファイルの日付が異なるため、古いビルドディレクトリのようなものからファイルをコピーしています。

    私は問題の一部が、昨日コードベースをクリーンアップしようとするいくつかのコードを分割することに関連していると推測できます。しかし、私は、私はちょうどマスターpageディレクティブで何かを間違って綴っただろうと思って、それは最初に>

  • +0

    おそらく、VSは新しいアセンブリをbinフォルダにコピーできません。出力ウィンドウをチェックして、ファイルがコピーされているかどうかを確認してください。 objフォルダのアセンブリの日付もチェックする必要があります。もう1つの問題は、Webプロジェクトをスキップするソリューション構成(出力ウィンドウは何が起こっているかを教えてくれるはずです)です。 – VinayC

    答えて

    4

    実際に何が起こったのか(ソース管理の履歴を見て)、一部のプロジェクトではx86プラットフォームが利用可能で、他のプロジェクトでは利用できなかったようです。最近、彼らは物事を一貫させるためにx86プラットフォームを手に入れました。ただし、そのプラットフォーム構成の出力パスはボード全体で同じに設定されていなかったため、アセンブリは異なるディレクトリに配置されていました。

    プラットフォームを「任意のCPU」に戻すと、正常に動作しました。出力パスを一貫したものにするすべてのプロジェクトを実行し、すべてのアセンブリを適切な場所に出力する必要があります。

    +0

    ありがとうございます。 asmxを変更するときに気づいた点を除いて、あなたのシナリオのほぼすべての側面が私の問題に合っています。コンパイルに失敗した(あるいはそう思われた)aspxに気づき、私が検索を広げて、これを見つけたときだけでした。 –

    1

    bin間と bin/x86/Debug出力の組み合わせの間で終わる方法を理解していないが、私はチェックして、二重ましたチェックされ、それはそうではないようです。

    また、masterpageの名前空間もチェックされていますか?

    CodeBehind="LoggedIn.master.cs"

    それは資本Mと、CodeBehind="LoggedIn.Master.cs"べきか?

    +0

    はい - それは正しく綴られています。 :) –

    +0

    あなたの提案をありがとう。 –

    1

    新しく生成されたmaster.csファイルの名前空間に問題がありますか?マスタページがソリューションのサブフォルダにある場合、自動的に生成された名前空間定義にフォルダ名が含まれます。

    残念ながら、将来のグラスゴーの.netイベントがSDNに集結していますか?

    +0

    名前空間が問題ではないようです。上記の新しいアップデートを参照してください。 –

    +0

    現時点では、Glasgowの.NETベースのScottish Developerイベントはまだありません。 8月以降、いくつかの新しいイベントに取り組んでいます。しかし、今月末にブッククラブ会議を開催しています:http://gla-book-club-july2011.eventbrite.com/ウェブサイトhttp://scottishdevelopers.comやtwitter stream @ScottishDevsに最新情報をご確認ください: - ) –

    +0

    あなたの提案をありがとう。 –

    関連する問題