Web プロジェクトの公開中に、参照ライブラリ (ServiceStack.OrmLite) の展開に関する奇妙な問題に直面しています。先週くらいまでは正常に動作していましたが、Visual Studio または msbuild からローカル ファイル システム、FTP または Web Deploy にプロジェクトを公開すると、一部の ServiceStack DLL が突然コピーされなくなりました。
OrmLite 参照は、nuget を介してクラス ライブラリ プロジェクトに追加されます。クラス ライブラリ プロジェクトの参照が、メインの Web アプリ プロジェクトに追加されます。Web アプリ プロジェクトを発行すると、5 つの ServiceStack.OrmLite DLL のうち 3 つを除くすべてのファイルがコンパイルおよびコピーされます (つまり、ServiceStack.Common、ServiceStack.Interfaces、および ServiceStack.Text はコピーされません)。すべての DLL 参照について、'Copy Local' プロパティを 'true' にチェック (およびリセット) しましたが、問題は解決しません。OrmLite が GAC に登録されていないことも確認しました。
ヒントや提案をいただければ幸いです。
更新 1:
同じ問題に関連する一連の投稿に出くわしました(特に ServiceStack ではありません)。Visual Studio と msbuild は [当然のことながら] 公開中にプロジェクト内の間接参照を無視しているようです。
私が遭遇したいくつかの解決策は次のとおりです。
メイン プロジェクトでもアセンブリを参照します。
ビルド スクリプトを使用して、ビルド後のイベントとして DLL をコピーします。
ダミー (モック) メソッドをクラス ライブラリに追加し、公開中にコピーされないアセンブリまたは名前空間から任意のクラスをインスタンス化します。このオプションを選択したところ、問題が部分的に解決されました。ServiceStack.Common と ServiceStack.Text はコピーされますが、ServiceStack.Interfaces の一部である「ServiceStack.Logging.LogManager」のモック インスタンスを作成したにもかかわらず、ServiceStack.Interfaces はコピーされません。だから、基本的に私はまだ立ち往生しています。