C#、.NET 2.0MSBuildは失敗しますが、Visual Studio内のビルドはうまく動作します
私は、2つのプロジェクト(ライブラリ参照として使用)を含むソリューションでASP.NET Webサイトを使用しています。 Visual Studioでビルド(デバッグまたはリリース)すると、すべて正常に動作します。ただし、MSBuildでのビルドは失敗します。
このビルドはでした(実際にはnAntタスク経由で起動されています)。変更された唯一の事は、タイプが自分のコードの中で参照している新しいユーザーコントロールがあることです。
問題のコードは、私のASPXコードの背後にあります。 MessageAlertは、ユーザーコントロールです:
MessageAlert userControl = this.LoadControl("~/UserControls/MessageAlert.ascx") as MessageAlert;
userControl.UserMessage = message;
this.UserMessages.Controls.Add(userControl);
タイプを認識するようにVisual Studioのを得るために 'MessageAlert' 私が持っていた:
1)上部に@Controlマークアップのclassname = "MessageAlert" に設定しますユーザーコントロールの(自動生成UserControls_MessageAlertを使用すると、どちらか働いていなかったため)
2)@Register
3を使用して、私のASPXのマークアップでユーザーコントロールを登録する)「ASPを使用しての追加"私のコードの背後にある
これらの手順を経て、ビジュアルスタジオからコードビハインドでMessageAlertタイプを正常に参照できました。しかし、MSBuildから「タイプまたは名前空間の名前 'MessageAlert'が見つかりませんでした(使用するディレクティブまたはアセンブリ参照がありませんか?)」
MSBuildの実行は非常に簡単です。ファイルを開き、設定プロパティをreleaseに設定します。
Visual StudioでMessageAlertへの型参照を取得するために必要なステップの数に基づいて、MSBuildプロセスに何かがないことが考えられます。しかし何?実際にはVisual StudioではMSBuildをバックグラウンドで呼び出しませんか?
ASPXのコードの背後にあるUserControl型を参照するより良い方法はありますか?
編集:明確にするために、MessageAlertユーザーコントロールは他の参照されているアセンブリ/プロジェクトでではなく、です。私はそれらを言いました、ウェブサイトと一緒に、MSビルドによって構築されている同じslnファイルであるソリューションファイルを構成するためです。
"その他" 参照プロジェクトの一つでmessageAlert制御ですか?一般的にはこれを行うことはできませんが、回避策があります。 – DancesWithBamboo
ウェブサイト「プロジェクト」でこれを使用していますか?もしそうなら、それは実際に*ビルドすることを意味するものではありません。これはまた、あなたが見ていた "UserControls_MessageAlert"に責任があるかもしれません。 –