unmanaged.dll.manifestファイルの目的は何ですか?
-
20-08-2019 - |
質問
unmanaged.dll.manifestファイルがタグ付けされているunmanaged.dllファイルを確認します。このファイルをエディターで開くと、他の特定の依存マネージドへのリンクを持つ通常のXMLのように見えますか?アセンブリ。これは最近の変更のようです。以前にそれらを表示したことを忘れないでください。
- これらのファイルが必要な理由(推測する必要がある場合、依存するマネージアセンブリやCLRをロードすることになります)
- これらのファイルに含めることができるその他の有用な情報は何ですか?依存するアンマネージdllへのリンクも含まれますか(これはいいですね)
。
<assembly xmlns="urn:schemas-microsoft-com:asm.v1" manifestVersion="1.0">
<trustInfo xmlns="urn:schemas-microsoft-com:asm.v3">
<security>
<requestedPrivileges>
<requestedExecutionLevel level="asInvoker" uiAccess="false"></requestedExecutionLevel>
</requestedPrivileges>
</security>
</trustInfo>
<dependency>
<dependentAssembly>
<assemblyIdentity type="win32" name="Microsoft.VC90.DebugCRT" version="9.0.21022.8" processorArchitecture="x86" publicKeyToken="1fc8b3b9a1e18e3b"></assemblyIdentity>
</dependentAssembly>
</dependency>
<dependency>
<dependentAssembly>
<assemblyIdentity type="win32" name="Microsoft.VC90.DebugMFC" version="9.0.21022.8" processorArchitecture="x86" publicKeyToken="1fc8b3b9a1e18e3b"></assemblyIdentity>
</dependentAssembly>
</dependency>
</assembly>
解決
あなたが見ているものは<!> quot; サイドバイ-サイドアセンブリ <!> quot; (SxS)。 Microsoftは、.NETサイドバイサイドマシンをアンマネージDLLに拡張し、それらを<!> quot;プラットフォームアセンブリ<!> quot;と呼びます。 DLLはDLL名でリンクを実行するのではなく、マニフェストを介してロードされるようになりました。 .NET GACに相当するのは、\ windows \ WinSxSフォルダーです。これにより、1つのシステムに複数のバージョンのDLLを同時にインストールし、同じDLLの異なるバージョンに対して異なるアプリケーションをバインドできます。また、.NETが提供するリダイレクト機能も含まれています。これは主にマニフェストが行うことです(リダイレクトを許可します)。
マニフェストで参照されているDLL(Microsoft.VC90.DebugCRTなど)もアンマネージド(つまりネイティブコード)です
アプリケーションマニフェストは、他の目的にも役立ちます。詳細はわかりませんが、XPのテーマの選択はマニフェストにも示されていることを思い出してください。
所属していません StackOverflow