この質問は何度も尋ねられている可能性があり、ここでの検索機能とGoogleの使用が苦手なだけかもしれませんが、この質問に対する答えはまだ見つかりません.
現在、プロジェクト X、プロジェクト Y、プロジェクト Z (マッピングのみを保持) の 2 つのプロジェクトがあります。
プロジェクト X は、私のセッション ファクトリなどを保持する FluentNhibernate プロジェクトです。したがって、これはマッピングがロードされる場所でもあります(これは重要であり、私が抱えている問題の全体的な理由であると思われます)
Project X では、Microsoft.SqlServer.Types.dll を使用するアセンブリを参照しました。
プロジェクト Y は、データベース接続にプロジェクト X を使用するサービスです。
すべてのプロジェクト ビルドは私の開発マシンで完全に検出および実行されますが、サーバーにデプロイすると機能しませんでした (実行時エラー)。エラーは、FluentNHibernate アセンブリが欠落していることを示していたため、かなりあいまいでしたが、そうではありませんでした。
Procmon.exe は幸運にも、サーバーに SQL Server がインストールされていないため、Microsoft.SqlServer.Types.dll をロードしようとしているコードを示しました (私のクライアントもインストールされていませんが、この .DLL をインストールする可能性が最も高い管理スタジオがあります)。 .
これまでのところ、DLL をコピーしたところうまくいきました (やった!)。
ここで、アセンブリをプロジェクト X に追加して、この参照がプロジェクト X を使用して他のプロジェクトにコピーされるようにすることを考えました。
悲しいことに、これでも .dll が参照プロジェクト Y にコピーされません。
これを実現する方法はありますか、それともこの Visual Studio は巧妙で、プロジェクト Y がこの .dll を必要としないことを認識しているため、コピーを拒否していますか?
(プロジェクト Z は実際の参照を必要とし、プロジェクト X は実行時にこのアセンブリをロードするため、Z と X の間に「ハード」参照はありません)
正直なところ、なぜこのように動作するのか(そして理想的には、私が望むように動作させる方法)を知りたいので、Stackoverflowの天才はこれに光を当てることができますか?