web-dev-qa-db-ja.com

ファイルまたはアセンブリ ''またはその依存関係の1つを読み込めませんでした

助けてください?

図書館は1つしかなく、それが私を夢中にさせています。これは私が受け取るエラーです。他の依存関係は使用していません。

Could not load file or Assembly 'FOD.Intranet.Lib, Version=1.0.0.0, Culture=neutral, PublicKeyToken=039c1f3a4c719e82' or one of its dependencies. The system cannot find the file specified. 

Description: An unhandled exception occurred during the execution of the current web request. Please review the stack trace for more information about the error and where it originated in the code. 

Exception Details: System.IO.FileNotFoundException: Could not load file or Assembly 'FOD.Intranet.Lib, Version=1.0.0.0, Culture=neutral, PublicKeyToken=039c1f3a4c719e82' or one of its dependencies. The system cannot find the file specified.

Source Error: 

An unhandled exception was generated during the execution of the current web request. Information regarding the Origin and location of the exception can be identified using the exception stack trace below.  

Stack Trace: 


[FileNotFoundException: Could not load file or Assembly 'FOD.Intranet.Lib, Version=1.0.0.0, Culture=neutral, PublicKeyToken=039c1f3a4c719e82' or one of its dependencies. The system cannot find the file specified.]
   NewCollection.VisualWebPart1.VisualWebPart1UserControl.TodaysNews() +0
   NewCollection.VisualWebPart1.VisualWebPart1UserControl.Page_Load(Object sender, EventArgs e) +52
   System.Web.Util.CalliHelper.EventArgFunctionCaller(IntPtr fp, Object o, Object t, EventArgs e) +25
   System.Web.Util.CalliEventHandlerDelegateProxy.Callback(Object sender, EventArgs e) +42
   System.Web.UI.Control.OnLoad(EventArgs e) +132
   System.Web.UI.Control.LoadRecursive() +66
   System.Web.UI.Control.AddedControl(Control control, Int32 index) +350
   NewCollection.VisualWebPart1.VisualWebPart1.CreateChildControls() +155
   System.Web.UI.Control.EnsureChildControls() +146
   System.Web.UI.Control.PreRenderRecursiveInternal() +61
   System.Web.UI.Control.PreRenderRecursiveInternal() +224
   System.Web.UI.Control.PreRenderRecursiveInternal() +224
   System.Web.UI.Control.PreRenderRecursiveInternal() +224
   System.Web.UI.Control.PreRenderRecursiveInternal() +224
   System.Web.UI.Control.PreRenderRecursiveInternal() +224
   System.Web.UI.Page.ProcessRequestMain(Boolean includeStagesBeforeAsyncPoint, Boolean includeStagesAfterAsyncPoint) +3394
17
Imir Hoxha

問題が解決しました!

Visual StudioがDLLをGACにコピーしているように見えましたが、明らかにそうではありません。そこで手動でコピーして動作します。

ただし、1つの質問ですが、sharepointアプリケーションを展開するときにVisual StudioがGACにコピーしないのは通常のことですか?

dllをGACにコピーする方法を知りたい場合

dllをGACにコピーする方法は2つあります。

  1. dllを手動でコピーします

    1. Windowsエクスプローラーでc:\ windows\Assemblyディレクトリを開きます
    2. Windowsエクスプローラーの別のインスタンスを開き、dllが配置されている場所(通常はbinフォルダー)に移動します。 (したがって、2つのウィンドウが開きます)
    3. gacにコピーするDLLを選択し、アセンブリディレクトリc:\ windows\Assembly内にドラッグします。
  2. vSを使用してGACに展開します。

    1. sharePointプロジェクトで[パッケージ]をダブルクリックします。
    2. Package.Packageが開きます。画面の左下を見て、「詳細設定」をクリックし、
    3. [追加]をクリックし、[プロジェクト出力からアセンブリを追加...]を選択します。
    4. [ソースプロジェクト]ドロップダウンリストでプロジェクトを選択し、[OK]をクリックします。
    5. 最後にソリューションを展開すると、dllがGACに配置されます。

ご協力ありがとうございます。

16
Imir Hoxha

Visual Studioで、サードパーティのアセンブリ、またはソリューション内の他のプロジェクトの独自のアセンブリをGACに追加するには、次を実行してください。

  1. SharePointプロジェクトのPackageフォルダーからPackage.packageを開きます。

  2. 下部の[詳細設定]をクリックします。

  3. [追加]をクリックして、追加するアセンブリのタイプを選択します。

  4. ダイアログで、dllファイル、chec GACまたはBINを選択し、必要に応じて安全なコントロールとクラスリソースエントリを追加します。 OKをクリックします。

アセンブリはWSPにパッケージ化され、マニフェストで定義され、毎回展開されます。

28
Oleg Savelyev

GACに含まれておらず、ビルドで参照されるアセンブリの場合、プラットフォームターゲットが一致しない場合にもこのエラーが発生することがあります。そのため、アセンブリプラットフォームの種類を、使用されているプラ​​ットフォームの種類と一致させます。

enter image description here

1
Giri

エラーがVisual Studio 2012での公開の場合、公開ウィザードの「公開中にプリコンパイル」オプションのチェックを外して、試してください再び。

Un-check the "Precompile during publishing" box

0
SushiGuy
  • バージョン番号は一致していますか?
  • DLLの代わりに.libファイルをロードしようとしているのを見るのは奇妙です。おそらく、代わりにdllをロードしたいですか?
  • この種の問題をデバッグするには、 Fusion Logging を試してください。
  • 使用しているライブラリは1つだけだと言いますが、そのライブラリには気づいていない依存関係があるかもしれません。 This SO question は、管理対象.NETアセンブリの依存関係のリストを処理します。
0
dario_ramos

まだこの問題を検討している人のために、知っておく必要があることの1つは、異なるGACutilsがあることです。したがって、正しいGACUTILを使用してDLLをGACを修正するために展開することを確認する必要があります

例えば:私のdllが3.5 .netフレームワークに準拠していて、私のOSバージョンが64ビットWindowsであった場合、それは以下の場所にあるでしょう

C:\ Program Files(x86)\ Microsoft SDKs\Windows\v7.0A\Bin\x64

これを理解するのに4日間の愚かな努力

0
mps

コードPage.Load( "control_path ...")を使用している場合。ロードする実際のascxファイルに、例外メッセージからのアセンブリを含むディレクティブがないことを確認してください

<%@ Register Tagprefix="SharePoint" Namespace="Microsoft.SharePoint.WebControls" Assembly="Microsoft.SharePoint, Version=14.0.0.0, Culture=neutral, PublicKeyToken=71e9bce111e9429c" %>
0
Maks Matsveyeu

DLLの参照を解除してから、再度参照し、プロジェクトを再構築してください。また、バージョンがプロジェクトのWeb設定に一致することを確認してください。

0
lafama

SharePointサーバーにアクセスできると仮定して、次を試してください。いくつかのランダムな考えと特定の順序はありません。

  • アセンブリをGACにデプロイするか、dllをWebアプリケーションのbinフォルダーにコピーします
  • Web.configアセンブリセクションと安全なコントロールセクションにアセンブリ情報を追加します。
  • Webパーツを開発している場合は、Webパーツの安全なコントロールセクションに参照を追加してください(これはあなたの問題ではないと思いますが)
  • 厳密な名前でアセンブリに署名すると、場合によっては役立つことがあります。
  • カスタム依存関係がある場合は、すべての依存関係(.netフレームワークおよびSharePoint関連以外)に対して同じ手順を実行する必要があります

Visual Studioを使用してSharePointプロジェクトを開発していますか(Webパーツですか?)。 SharePointプロジェクトでそれを参照していますか?問題を特定できるようにするには、開発環境の詳細を提供する必要があります。

0
Ken