2016-09-15 7 views
0

私はこの問題を数週間にわたって解決しています。私のDLLはすべて正しく参照され、ローカルコピーに設定されています。ローカルマシンからアプリケーションをビルドマシンに正しくビルドできます。私のローカルとビルドボックスの両方にAzure SDK 2.9がインストールされていますが、ステージング環境でアプリケーションを実行すると、.NETアセンブリがbinフォルダにコピーされていない

"ファイルまたはアセンブリをロードできませんでした" Microsoft.Practices.EnterpriseLibrary.Common、Version = 5.0.505.0 、Culture = neutral、PublicKeyToken = 31bf3856ad364e35 'またはその依存関係の1つ。指定されたファイルが見つかりません。

私は私たちのステージングマシン上の融合ログを有効にし、ここで出力されます:

=== Pre-bind state information === 

LOG:表示名= Microsoft.Practices.EnterpriseLibrary.Common、バージョン= 5.0.505.0、文化=中立、なPublicKeyToken = 31bf3856ad364e35 (完全指定) LOG:のappBaseは=ファイル:/// F:/ sitesroot/3/ LOG:初期PrivatePath = F:(不明):アセンブリを呼び出す\ sitesroot \ 3 \ binに

ログ:このバインドは、デフォルトのロードコンテキストで開始します。 ログ:アプリケーション構成ファイルを使用:F:¥sitesroot¥3¥web.config ログ:ホスト構成ファイルを使用:D:¥Windows¥Microsoft.NET¥Framework64¥v4.0.30319¥aspnet.config ログ:マシン構成の使用D:\ Windows \ Microsoft.NET \ Framework64 \ v4.0.30319 \ config \ machine.configのファイルです。 LOG:ポストポリシーの参照:Microsoft.Practices.EnterpriseLibrary.Common、バージョン= 5.0.505.0、Culture =ニュートラル、PublicKeyToken = 31bf3856ad364e35 ログ:新しいURLファイルのダウンロードを試みる:/// D:/Windows/Microsoft.NET /Framework64/v4.0.30319/現代のASP.NETファイル/ public_ [私のDLL] /80b18788/752a457e/Microsoft.Practices.EnterpriseLibrary.Common.DLL。 ログ:新しいURLファイルのダウンロードを試みています:/// D:/Windows/Microsoft.NET/Framework64/v4.0.30319/Temporary ASP.NET Files/public_ [my DLL] /80b18788/752a457e/Microsoft.Practices.EnterpriseLibrary。 Common/Microsoft.Practices.EnterpriseLibrary.Common.DLL。 ログ:新しいURLファイルのダウンロードを試みています:/// F:/sitesroot/3/bin/Microsoft.Practices.EnterpriseLibrary.Common.DLL。 ログ:新しいURLファイルのダウンロードを試みる:/// F:/sitesroot/3/bin/Microsoft.Practices.EnterpriseLibrary.Common/Microsoft.Practices.EnterpriseLibrary.Common.DLL。 ログ:新しいURLファイルのダウンロードを試みています:/// D:/Windows/Microsoft.NET/Framework64/v4.0.30319/Temporary ASP.NET Files/public_ [my DLL] /80b18788/752a457e/Microsoft.Practices.EnterpriseLibrary。 Common.EXE。 ログ:新しいURLファイルのダウンロードを試みています:/// D:/Windows/Microsoft.NET/Framework64/v4.0.30319/Temporary ASP.NET Files/public_ [my DLL] /80b18788/752a457e/Microsoft.Practices.EnterpriseLibrary。 Common/Microsoft.Practices.EnterpriseLibrary.Common.EXE。 ログ:新しいURLファイルのダウンロードを試みています:/// F:/sitesroot/3/bin/Microsoft.Practices.EnterpriseLibrary.Common.EXE。 ログ:新しいURLファイルのダウンロードを試みています:/// F:/sitesroot/3/bin/Microsoft.Practices.EnterpriseLibrary.Common/Microsoft.Practices.EnterpriseLibrary.Common.EXE。

D:/Windows/Microsoft.NET/Framework64/v4.0.30319/Temporary ASP.NETに行くと、DLLは存在しないので、明らかにこのDLLの「間違った」場所を探しています。

私はVS 2013を使用しています。誰でもアイデアはありますか?

編集:ローカルからビルドすると、一部のDLLをそのフォルダに再コピーする前に、binフォルダが消去されていることを確認できます。奇妙なことは、そこにコピーされたDLLが、コードや設定ファイルのどこでも参照されなくなったことです。ポストビルドスクリプトもありますが、これらの古いDLLはそこでは参照されていないことも確認されていません。

SECOND EDIT:

私は、ステージングインスタンスのいずれかにエンタープライズライブラリDLLを見つけたが、それはエラーが参照しているディレクトリではありません。実際にAzureクラウドサービスである第2のプロジェクトを参照するWebプロジェクトがあります。だから、サービスのフォルダがTemporary ASP.NET Filesフォルダの下に作成されているように見えますが、それは空です。

DLLはここにある:

D:\ WINDOWS \ Microsoft.NET \ Framework64 \ v4.0.30319一時\ ASP.NETファイル\ルート\ 59a01799 \ 5b6b1a2 \アセンブリ\ DL3 \ 11d624d2 \ 4e820e1f_4413d201

ここでは、 "root"がWebアプリケーションだとします。エラーは、このフォルダ内に探しています:

D:/Windows/Microsoft.NET/Framework64/v4.0.30319/Temporary ASP.NETファイル/ [私のサービスクラスライブラリ]/060e4c2a/e3b3457e/

Microsoft.Practices.EnterpriseLibrary.Common.DLLについては、 Webプロジェクトと参照されているサービスクラスライブラリの両方に「パッケージ」フォルダがあり、両方とも必要なすべてのDLLが含まれています。だから私は、おそらく、それは何かを把握することはできませんDLLを探すためにルートWebアプリケーションのプロジェクトフォルダを指しているサービスクラスのライブラリにおそらく設定があると思う。

+0

ステージング環境でMSエンタープライズライブラリが不足しているようですが、インストールは許可されていますか? [Microsoft Enterprise Library 5.0](https://www.microsoft.com/en-us/download/details.aspx?id=15104) – sly

+0

新しく追加されたRedis SessionStateProviderこのアプリケーションをに移行しています。私はRedis DLLがインストールされているEL DLLに依存しているとは思わないので、Redis参照で見たエラーはステージングにないELと何か関係があるとは思わないでしょう。 – Ben

+0

このMSBuildの制限にぶつかった、http://stackoverflow.com/questions/36270073/msbuild-referencedependencyps-does-not-contain-nth-dependencies –

答えて

0

Webプロジェクトで参照されているサービスライブラリのビルド前スクリプトで、以前の開発者が特定のDLLをbinフォルダに手動でコピーするファイルコピープログラムを作成したという問題がありました。ビルド定義とビオラの下で、これらのDLLをそのスクリプトに追加しました。

皆様のご返信ありがとうございます。

関連する問題