問題タブ [winmd]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
windows-runtime - 配布用に Windows ランタイム コンポーネントをパッケージ化する方法は?
JavaScript と XAML Windows ストア アプリの両方で使用する WinRT コンポーネント (.winmd) を作成しました。JavaScript クライアントで Loose .winmd ファイル出力を含めて参照すると、次のビルド警告が表示されます。
Microsoft.AppXPackage.Targets(808,9): 警告 APPX1707: .winmd ファイル 'myRuntimeComponent.winmd' の実装ファイルが提供されていません。アプリ マニフェストで登録情報を生成するには、プロジェクト ファイルの .winmd 参照項目で 'Implementation' メタデータを指定します。
このエラーに関するドキュメントや、実装メタデータを含める方法が見つかりません。
JavaScript クライアントを実行しているときに、.winmd からエクスポートされたクラス メソッドが呼び出されると、次の例外がスローされます。
0x80040154 - JavaScript ランタイム エラー: クラスが登録されていません
.winmd をビルドする Visual Studio プロジェクトを参照するのではなく、クライアント アプリケーション プロジェクトで緩い .winmd ファイルを参照していることに注意してください。私のユース ケースは、.winmd コンポーネントの完全なソースではなく、.winmd 出力を配布することです。ソース配布はオプションではありません。
また、Windows ランタイム コンポーネントがプロジェクト参照として参照されている場合、JavaScript クライアントが正しくビルドおよび実行されることにも注意してください。C# XAML クライアントは、プロジェクト参照または Loose .winmd への参照を使用して正しく実行されます。
Loose .winmd を参照すると、クライアント アプリケーションのビルドで一部の登録情報が生成されていないように見えます。
JavaScript とマネージ クライアントの両方で使用するルーズな Windows ランタイム コンポーネントをビルドして配布するにはどうすればよいですか?
c# - ランタイムは、.winmd 参照の代わりに exe/dll を検索しようとします。
参照ライブラリを使用するアプリがあります。そのライブラリは、.winmd ライブラリを参照します。
参照されているライブラリの IL を見ると、次の参照が表示されます。
ただし、実行時に例外が発生します。
また、Procmon を使用すると、FlurryWin8SDK.exe と FlurryWin8SDK.dll を検索しようとしていることがわかりますが、.winmd 拡張子のファイルは検索されません。
また、これは Fusion ログビューアからの出力です。
この奇妙な動作の理由は何ですか?
c# - winmd ファイルの読み込み時に LoadFrom と UnsafeLoadFrom が失敗する
C# 4.5 アプリで Reflection を使用して .winmd ファイルを読み込もうとしています (そこに保存されているメタデータを読みたいです)。
と を使用するAssembly.LoadFrom
とAssembly.UnsafeLoadFrom
、アセンブリの読み込みが次の例外で失敗します。
追加情報: ファイルまたはアセンブリ 'file:///xxxxx.winmd' またはその依存関係の 1 つを読み込めませんでした。操作はサポートされていません。(HRESULT からの例外: 0x80131515)
使用Assembly.ReflectionOnlyLoadFrom
すると成功します。
この動作の説明は何ですか? また、メタデータを読み取るために .winmd コンポーネントを読み込む適切な方法は何ですか?
c# - 異なるディレクトリにある winmd ファイル間の関係は何ですか?
私は Windows ストア アプリの開発に取り組んでおり、Windows のさまざまなディレクトリに winmd ファイルが見つかりました。
Windows ストア アプリを開発する場合、アプリは次の場所にあるWindows.winmdファイルを参照しています。
C:\Program Files (x86)\Windows Kits\8.0\References\CommonConfiguration\Neutral
しかし、次の場所にいくつかの異なる winmd ファイルを見つけることもできました。
C:\windows\system32\WinMetadata
私の質問は、これら 2 つの異なるディレクトリの下にある winmd ファイル間の関係は何ですか?
コンパイル時に大きなWindows.winmdファイルが使用されて appx パッケージがビルドされ、 C:\windows\system32\WinMetadataの下にある個別の winmd ファイルが実行時に使用されると思いますか?
また、C:\windows\system32\WinMetadataの下にも大きなWindows.winmdファイルが 1 つあるのはなぜですか?
.net - .winmd ファイルが与えられた場合、実際の実装 DLL はどこにありますか?
.winmd ファイルが与えられた場合、実際の実装はどこにありますか? .winmd ファイルは、ヘッド ファイルや動的ライブラリの .lib ファイルと同じように、実装が含まれていません。その実装がどこにあるのか知りたいです。ありがとう。
c# - Bing Maps を使用する Windows ランタイム コンポーネントの作成
Bing Maps を使用する Windows ランタイム コンポーネントを作成しようとしています。Bing Maps ライブラリは WinMD ベースであるため、独自の WinMD も作成する必要があります。悲しいことに、Bing Maps で必要な VCLibs WinMD と、ビジュアル コンポーネントの作成に必要な Windows WinMD の間に競合があるようです。コンパイルすると、次のエラーが発生します。
Windows ランタイム タイプ 'Windows.Foundation.Point' が、参照されている複数の winmd ファイルで見つかりました。「C:\Program Files (x86)\Microsoft SDKs\Windows\v8.1\ExtensionSDKs\Microsoft.VCLibs\12.0\References\CommonConfiguration\neutral\platform.winmd」または「C:\Program Files (x86)」のいずれかを削除してください\Windows Kits\8.1\References\CommonConfiguration\Neutral\Windows.winmd' を参照ファイルの一覧から選択します。
これらの参照のどちらも削除できないため (両方ともライブラリで使用されています)、コンポーネントを作成できません。
この問題を解決する方法はありますか?
c# - Windows ストア アプリの TypeLoadException
Windows ストア アプリで Winmd (Windows ランタイム コンポーネント) を使用しています。winmd で定義されている型をインスタンス化しようとすると、次の例外が発生します。
必要な参照をすべて追加し、マニフェスト ファイルに適切な変更を加えました。私は何か見落としてますか?誰もがこれを引き起こす原因を知っていますか?
javascript - x64 にコンパイルし、System.BadImageFormatException を受け取りました
「ライブラリ」のC#プロジェクトとプロジェクト「JavaScript」を使用したソリューションがあり、それをコンパイルすると、別のプロジェクトに取り込まれる.winmdファイルが生成されます。しかし、このプロジェクトは x86 上に構築されており、x64 で次のエラーが発生するようにアプリケーションを実行するには、x64 用にコンパイルする必要があります。