2012-04-02 9 views
1

私はウェブサイトプロジェクトとサポートクラスを保持するいくつかのプロジェクトを含むソリューションを持っています。各プロジェクトは、構成、データ、アイデンティティ、ビジネスオブジェクトなどの別々の基本機能を提供します。私がVS2008でソリューションを開くと、完全に構築されます。実行、デバッグ、およびコンパイルまたはJIT例外の発生はありません。このTFS自動ビルドエラーの原因を突き止めるにはどうすればよいですか?

TFS 2010で自動ビルド定義を生成すると、ビルドが実行され、すべてのサブプロジェクトが順番にコンパイルされます。エラーをトレースしようとしたドキュメントでは、これがウェブサイトプロジェクトに必要であることを示しているため、それらはすべて "Debug | Mixed Platforms"をターゲットにしています。ビルドログには、新しくコンパイルされたライブラリとサードパーティライブラリのすべてが\Binariesディレクトリとウェブサイト\binディレクトリの両方にコピーされています。次に、ログの次の行は次のとおりです。

C:\WINDOWS\Microsoft.NET\Framework\v2.0.50727\aspnet_compiler.exe -v /MySolution -p ..\MySolution\ -u -f -d -fixednames D:\TFS\b\308\Binaries\_PublishedWebsites\MySolution\ 
D:\TFS\b\308\Sources\MySolution\SomeFolder\SomePage.aspx.vb(15): error BC30456: 'MyProperty' is not a member of 'Some_UserControl_ForPage'. [D:\TFS\b\308\Sources\Solution Files\MySolution.sln] 
Done Building Project "D:\TFS\b\308\Sources\Solution Files\MySolution.sln" (default targets) -- FAILED. 

Build FAILED. 

"D:\TFS\b\308\Sources\Solution Files\MySolution.sln" (default target) (1) -> 
(MySolution target) -> 
    D:\TFS\b\308\Sources\MySolution\SomeFolder\SomePage.aspx.vb(15): error BC30456: 'MyProperty' is not a member of 'Some_UserControl_ForPage'. [D:\TFS\b\308\Sources\Solution Files\MySolution.sln] 

問題のユーザーコントロールのプロパティは、「祖父母」の継承に属します。コントロール自体は、ビジネスオブジェクトライブラリのカスタムWebUserControlを継承します。そのクラスは、この基本的なプロパティを持つあまり具体的でないWebUserControlから継承します。コード行がコメントアウトされると、エラーは変更されますが、それはビルドチェーンのさらに下で発生するもう1つの "不可能な"エラーです。

このビルドエージェントから自動的に構築され、他のすべてのフレームワーク2.0+で他のWebサイトプロジェクトが正常にビルドされています。ビルド定義(workspaceなど)のさまざまなプロパティを変更したり、ソリューション自体のビルド構成を調整したりすると、動作に変化はありません。ビルドが完了すると、正常にビルドされたプロジェクトはすべてビルドフォルダに格納されます。さらに、このソリューションには、それほど複雑でない2番目のWebサイトプロジェクトが含まれており、ビルドフォルダの_PublishedWebsitesフォルダに正常にビルドされて終了します。

答えて

1

最初のコースは、ウェブサイトのプロパティを設定するUse fixed naming and single page assembliesのチェックを外すことでした。これにより、物理的なエラーはなくなりました。これは、計算された移動ではなく、同僚からのものでしたが、何らかの理由でTFSがネストされた参照を解決できないというのが私の推測です。これにより参照エラーは解消されましたが、ユーザーコントロール上のあいまいな名前空間を示す新しいエラーが表示されます。 Webサイトプロジェクトは単一ページアセンブリに限定されていないため、複数のコピーが生成されている可能性があります(なぜ私を超えているのですか)。その結果、あいまいになります。

私はこの解決策の内容を完全には理解していませんが、this blog article by Aaron Hallbergの問題について読んだところ、IDEで実行されるコンパイラとコンパイラが実行されるときのコンパイラの違いが分かります自動ビルドエージェント。彼の応答をまとめると、IDEはWebサイトのMSBuildに-uを自動的に挿入しません。しかし、TFSはWebサイトのプロジェクトを検討するのではなく、ソリューションを検討するだけなので、設定Debug.AspNetCompiler.Updateableを探します。この設定をオンにすると、コントロールの名前空間があいまいになることがあります。なぜ私は理解していないし、彼のブログの記事を読むことは私のために何かをクリアしていない。

ウェブサイトのプロパティページのAllow this precompiled site to be updatedのチェックを外すとサイトが適切に構築され、プリコンパイルされたサイトではないためビルドに悪影響はありませんでした。

関連する問題