私は、奇妙で非理想的なプロジェクト/ソリューションアーキテクチャを扱っています。私は、必要なものを達成する方法があるかどうかを判断しようとしています。リリースビルド中にVisual Studioが/ bin/debug /内の未解決のプロジェクト参照を検索するのはなぜですか?
私はSolutionOne.sln(VS 2010でビルド)とSolutionTwo.sln(VS 2013でビルド)という2つのソリューションに分かれています。 SolutionOneでは、我々は以下のプロジェクトがあります。SolutionTwoで
SolutionOne.sln
- A.csproj
- B.csproj
- C.csproj (includes reference to B.csproj)
を、我々はSolutionTwoにユニークないくつかのプロジェクトを持っているが、我々はまた、SolutionOneから「C」のプロジェクトを含めている - しかし、ないプロジェクトB (この最小限の例の外には、実際には複数の連鎖参照があり、それらをすべて含めた時点で、基本的にSolutionOneの大半を占めることになります)。私はこれが、SolutionTwoを開くと、 "C"プロジェクトは、2番目の解決策には含まれていないため、 "B"プロジェクトへの未解決の参照を示していることを理解しています。
ただし、私がSolutionTwoより前にSolutionOneをビルドしている限り、デバッグ設定ではビルドは成功し、アプリケーションは機能しています。ビルド時には、Visual StudioはSolutionOneビルド内の場所から欠落した "B"プロジェクト参照用のビルドされたDLLを取得するのに十分なほどスマートです。これらの2つのソリューションはルートディレクトリを共有します。
C:\Windows\Microsoft.NET\Framework\v4.0.30319\Microsoft.CSharp.targets(316,9): error MSB3104: The referenced assembly "[path to project]\bin\debug[ProjectReferenceName].dll" was not found. If this assembly is produced by another one of your projects, please make sure to build that project before building this one.
なお、エラーメッセージに、それが正しいbinフォルダにプロービングしているように見えるが、それはに探していること:私は彼らのリリース構成で両方のソリューションを構築しようとすると、しかし、私は次のエラーを取得します/ releaseよりもむしろ/ releaseよりもむしろ/ releaseではなく、両方のソリューションがリリース構成で構築されています。
これはプロジェクト/ソリューションの関係を理想的に使用するものではないことを理解していますが、この段階でこれが設計されている方法を再構成することはほとんどありません。期待どおり、/ bin/release /ディレクトリにある未解決のプロジェクト参照DLLを適切に探すためにリリースビルドを入手する方法はありますか?
私は前にこの問題にぶつかりました。申し訳ありませんが詳細を覚えていない。 IIRCのmsbuildには、ソリューションにプロジェクトファイルが含まれていない場合、msbuildがプロジェクト参照を把握するための何かを行い、指定されたビルド構成に関係なく常にデバッグアセンブリを検索するというバグ/制限があります。 –
@ChrisO、ええ、それは私が見ていることを正確に記述することです。私はちょうどあなたがバグだと思っているのかどうか疑問に思っています(この時点で私が思っているように)、あるいは動作を設定する方法があれば疑問です。ありがとう! –