1

参照ライブラリを使用するアプリがあります。そのライブラリは、.winmd ライブラリを参照します。

参照されているライブラリの IL を見ると、次の参照が表示されます。

.assembly extern windowsruntime FlurryWin8SDK
{
  .ver 0:9:0:0
}

ただし、実行時に例外が発生します。

{"Could not load file or assembly 'FlurryWin8SDK' or one of its dependencies. The system cannot find the file specified.":"FlurryWin8SDK"}

また、Procmon を使用すると、FlurryWin8SDK.exe と FlurryWin8SDK.dll を検索しようとしていることがわかりますが、.winmd 拡張子のファイルは検索されません。

また、これは Fusion ログビューアからの出力です。

BEGIN : Framework bind.
END   : The provided identity format is not recognized. (Exception from HRESULT: 0x80132003)
BEGIN : Windows Runtime Type bind.
END   : The provided identity format is not recognized. (Exception from HRESULT: 0x80132003)
BEGIN : Immersive bind.
END   : The system cannot find the file specified. (Exception from HRESULT: 0x80070002)

この奇妙な動作の理由は何ですか?

4

2 に答える 2

2

おかしな行動ではありません。WinRT は、ストア ユーザーがトラブルシューティングを行うことを期待できない種類の問題である DLL Hell を強力に阻止します。非常に厳しい要件は、すべての依存関係がアプリ パッケージに含まれていることです。そして、Windows はそのパッケージでのみ DLL を検索します。

これにより、.winmd ファイルの使用が少し役に立たなくなります。個別にパッケージ化された多くの個別のソリューションから構築された大規模な製品でのみ考慮する必要があります。

于 2013-08-02T16:23:20.877 に答える