20個以上のプロジェクトがあるVS2010ソリューションファイルがあり、その中にはソリューション内の他のプロジェクトに依存するものがあります。MSBuild 4.5はプロジェクトの依存関係を無視しています
さまざまな目的で複数のビルド構成が設定されていますが、最小限のプロジェクト数だけを含めるようにビルドするプロジェクトをトリミングしました。
たとえば、3つのライブラリ(A、B、C)、Webサイトプロジェクト、およびWebサイト展開プロジェクト(VS2010)があります。 WebサイトにはライブラリAとBの参照があり、BにはCへの参照があります。私のビルド構成には、Webサイトとデプロイメントプロジェクトのみがチェックされています。ソリューションのプロパティからプロジェクトの依存関係をチェックすると、Webサイトはライブラリを正しくリストし、BはCを期待通りに表示します。
VS2010内からビルド設定に対してビルドを実行すると、完全に正常に動作しますが、自分の設定を指定するソリューションでMSBuildを実行すると、エラーが発生します。
msbuild.exe mysolution.sln /t:Build /p:configuration=MyConfig
ここで私が得るエラーの例です:
Services\IService.cs(11,63): error CS0246: The type or namespace name 'Priority' could not be found (are you missing a using directive or an assembly reference?)
私は私のビルドサーバー(チームシティーのV7.1.2)にこの出来事に気づいたが、私は複数のマシン上でそれを再現することができます私はそれをMSBuild自体の問題に絞り込んだ。
.NET 4.5(および2つのセキュリティパッチ)をインストールした後で起きているだけなので、アンインストールしてから.NET 4.0(パッチあり)を再インストールしたので、同じコマンドを試してみました。良い。
これは、.NET 4.5でMSBuildで何かが変更されたり壊れたりしたと考えていますが、ドキュメントにはこのような変更については何も言わないようです。
MSBuildの4.5ドキュメント:http://msdn.microsoft.com/en-us/library/hh162058.aspx
私もMSBuildのにBuildProjectDependencies=true
を渡して試してみた、そしてそれは彼らが正しいと意図的である構成マネージャで選択されなかったので、それが他のプロジェクトをスキップしていることを知らせるアップします。
私がMSBuild 4.5で動作させる唯一の方法は、スキップされていたプロジェクトを選択して戻すことでしたが、実際のソリューションは依存関係のチェーンでもう少し複雑なので、新しいプロジェクトや依存関係を使用してソリューションを更新するたびに、手動で設定を管理しようとします。それは自動であるべきである(SHOULD)。
私は何をしているのですか?
+1の2つ目の理由です。 –
MSBuildに確認済みのバグがあるとはどういう意味ですか? MSDNにこの問題へのリンクがありますので、それを追跡してMicrosoftにガイダンスがあるかどうか確認してください。 –
ここにいた http://connect.microsoft.com/VisualStudio/feedback/details/586875/msbuild-4-0-incorrectly-processes-project-dependencies-specified-in-solutions-file 4.5で修正されました –