2009-09-03 10 views
0

CruiseControl.netを使用してビルドしたいWebプロジェクトがあります。 1つのページにWebサイトプロジェクトはVS2008 SP1でビルドされていますが、CruiseControl.netを通じてMSBUILDでは作成されません。

がRepeaterコントロール内にネストされたユーザーコントロールがある、と私はItemDataBoundイベントハンドラでそのユーザーコントロールを厳密に型指定された参照を取得する必要があります:

ASP.usercontrols_stars_ascx stars = (ASP.usercontrols_stars_ascx)e.Row.FindControl("stars"); 
    stars.StarCount = Convert.ToInt32(drv["rating"]); 

これはVS2008で正常に動作しますが、

w:\CCNet\InflatableBoats\Working\IBWeb\UserControls\DisplayReviews.ascx.cs (49,): 

errorCS0234:型または名前空間名「usercontrols_stars_ascx」は、名前空間「ASP」は存在しません(あなたがアセンブリ参照が不足している?)

次のエラーでMSBUILDで休憩

MSBUILDは、Webサイトプロジェクトがユーザーコントロールとページに使用するASP名前空間を認識していないようだから、名前空間の問題かもしれないと思います。

答えて

0

ascx生成クラスの代わりにcodebehindクラスを参照する必要があります。 ascxクラスはコードビハインドクラスを継承します。したがって、コードビハインドでStarCountプロパティを定義し、参照してください。

0

[参照]タブからアセンブリを参照する場合どうやらGACと同じではありません)[参照の追加]ダイアログの[.NET]タブに記載されているし、それは同じでですインストール場所、Visual Studioは、レジストリを使用してファイルを検索することを想定しています。私はそれが特定のバージョンを真に設定していると思います。それはあなたがIDEで気づく唯一の方法です。これにより、たとえ同じDLL内に同じDLLが存在していても、そのDLLをコンパイルすることはできません。

これは、UnityアプリケーションブロックをTFSフォルダに直接インストールした後、TFSにバイナリを追加したときに、CruiseControlで一度噛みました。 .csprojファイルに参照用のHintPathエントリがないため、ビルドサーバーはDLLを検出できませんでした。

[プログラムの追加と削除]でブロックをアンインストールしてから、TFSから再度バイナリを取得しました。参照を削除して再追加すると、問題が解決しました。

これはあなたの状況に関連しないかもしれません(私はjrummellの提案を最初に試してみる)が、私はそれに言及すると思った。

Visual Studioは、開発者よりも優れていると想定する傾向があります。一般的にそうではありません。

関連する問題