質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
UWP

UWPは、Universal Windows Platformの略。様々なデバイス向けに提供されているアプリケーションを共通のフレームワーク上で動作可能にする仕組みで、Windows10で導入されました。

C#

C#はマルチパラダイムプログラミング言語の1つで、命令形・宣言型・関数型・ジェネリック型・コンポーネント指向・オブジェクティブ指向のプログラミング開発すべてに対応しています。

WPF

Windows Presentation Foundation (WPF) は、魅力的な外観のユーザー エクスペリエンスを持つ Windows クライアント アプリケーションを作成するための次世代プレゼンテーション システムです

Q&A

解決済

2回答

6248閲覧

WPFでのWiFiDirect実装方法について

ibuki

総合スコア15

UWP

UWPは、Universal Windows Platformの略。様々なデバイス向けに提供されているアプリケーションを共通のフレームワーク上で動作可能にする仕組みで、Windows10で導入されました。

C#

C#はマルチパラダイムプログラミング言語の1つで、命令形・宣言型・関数型・ジェネリック型・コンポーネント指向・オブジェクティブ指向のプログラミング開発すべてに対応しています。

WPF

Windows Presentation Foundation (WPF) は、魅力的な外観のユーザー エクスペリエンスを持つ Windows クライアント アプリケーションを作成するための次世代プレゼンテーション システムです

0グッド

0クリップ

投稿2017/12/11 06:23

編集2017/12/12 04:20

Win10のVS2017の.NET Framework4.6にて
以下のWindows.Devices.WiFiDirect NamespaceをUWPでなくWPFで実装したいと思い、C#でExamplesコードをコピペしてみました。
https://docs.microsoft.com/en-us/uwp/api/windows.devices.wifidirect

すると、以下のコンパイルエラーが発生しました。

エラー CS0012 型 'IAsyncOperationWithProgress<,>' は、参照されていないアセンブリに定義されています。
エラー CS0012 型 'IAsyncActionWithProgress<>' は、参照されていないアセンブリに定義されています。
エラー CS0012 型 'IAsyncAction' は、参照されていないアセンブリに定義されています。
エラー CS0012 型 'IAsyncOperation<>' は、参照されていないアセンブリに定義されています。

対象を調べて、
using Windows.Foundation;
を追加してみたのですが、解決しませんでした。

もう少し調べると、参照にRuntimeを追加しないといけないとあったので
COMにJSApplication Runtime Libraryを追加してみました。

そうすると上記のエラーは消えたのですが、新たに
COM 参照 "b2a4a181-913d-11cf-8c81-0020afe5f0b2" バージョン 1.0 を解決できませんでした。オブジェクト参照がオブジェクト インスタンスに設定されていません。
というエラーが発生しました。

このエラーの解決方針か、あるいは参照にRuntimeを追加する以外の対処法はありますでしょうか

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答2

0

ベストアンサー

UWPアプリは作成したことがないので外していたらすみません。

もう少し調べると、参照にRuntimeを追加しないといけないとあったので

COMにJSApplication Runtime Libraryを追加してみました。

これはどこからの情報でしょうか?
ざっと検索した、

等を見ると、Runtimeの追加の仕方が異なっているように思えます。

なお、こちらの環境では以下の手順でコンパイルは通るようです。

<Reference Include="Windows.winmd"> <HintPath>$(MSBuildProgramFiles32)\Windows Kits\10\UnionMetadata\Windows.winmd</HintPath> </Reference> <Reference Include="System.Runtime.WindowsRuntime, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089, processorArchitecture=MSIL"> <SpecificVersion>False</SpecificVersion> <HintPath>..............\Program Files (x86)\Reference Assemblies\Microsoft\Framework.NETCore\v4.5\System.Runtime.WindowsRuntime.dll</HintPath> </Reference>

csprojの適切な箇所に上記を追加。パスや参照先バージョンは適宜修正してください。
TargetPlatformVersionはなくても問題なさそうです。

ソース上は

using Windows.Foundation;

の追加です。
実際の動作に関しては確認していません。

また、こちらも参照しました。
https://ufcpp.wordpress.com/2012/09/18/%E3%83%87%E3%82%B9%E3%82%AF%E3%83%88%E3%83%83%E3%83%97-%E3%82%A2%E3%83%97%E3%83%AA%E3%81%8B%E3%82%89%E3%81%AEwinrt-api%E5%88%A9%E7%94%A8/

投稿2017/12/12 04:51

編集2017/12/12 23:48
mituha

総合スコア385

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

ibuki

2017/12/12 07:37 編集

ありがとうございます。 プロジェクトをアンロードしてcsprojを編集し、 <TargetPlatformVersion>10.0.14393.0</TargetPlatformVersion> および <Reference Include="System.Runtime.WindowsRuntime"> <HintPath>C:\Program Files (x86)\Reference Assemblies\Microsoft\Framework.NETFramework\v4.5\System.Workflow.Runtime.dll</HintPath> </Reference> を追加したところ、上記のエラーは消えました。 しかし、新たに以下のエラーが発生しました。 エラー CS4036 'IAsyncOperation<WiFiDirectDevice>' に 'GetAwaiter' の定義が含まれておらず、型 'IAsyncOperation<WiFiDirectDevice>' の最初の引数を受け付ける拡張メソッド 'GetAwaiter' が見つかりませんでした ('System' の using ディレクティブが不足していないことを確認してください)。 さらにusingやcsprojに追加するのかと思い、GetAwaiterまわりを調べてみましたが、解決できませんでした。
mituha

2017/12/12 23:45

繰り返しっぽくなりますが、なぜ、`System.Workflow.Runtime.dll` を追加したのでしょうか? 紛らわしいですが、Workflowはワークフロー用のDLLであり、今回の件とは関係ありません。 その前の `JSApplication Runtime Library` もJavaScript関連っぽい気がします(詳細不明)し関係なさそうです。 修正過程を見直すことで質問前に解決できることも増えると思います。 なお、こちらの環境では以下の手順でコンパイルは通るようです。 ``` <Reference Include="Windows.winmd"> <HintPath>$(MSBuildProgramFiles32)\Windows Kits\10\UnionMetadata\Windows.winmd</HintPath> </Reference> <Reference Include="System.Runtime.WindowsRuntime, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089, processorArchitecture=MSIL"> <SpecificVersion>False</SpecificVersion> <HintPath>..............\Program Files (x86)\Reference Assemblies\Microsoft\Framework.NETCore\v4.5\System.Runtime.WindowsRuntime.dll</HintPath> </Reference> ``` csprojの適切な箇所に上記を追加。パスは適宜修正してください。 ソース上は ``` using Windows.Foundation; ``` の追加です。 実際の動作に関しては確認していません。 また、こちらも参照しました。 https://ufcpp.wordpress.com/2012/09/18/%E3%83%87%E3%82%B9%E3%82%AF%E3%83%88%E3%83%83%E3%83%97-%E3%82%A2%E3%83%97%E3%83%AA%E3%81%8B%E3%82%89%E3%81%AEwinrt-api%E5%88%A9%E7%94%A8/
ibuki

2017/12/13 00:44

ありがとうございます。 模索しているうちに手順が混乱してしまったのだと思います、混乱させて申し訳ありません。 ソースのusingに加えて、csprojに上記を自パスに置き換えたものを追加したらコンパイルが通りました。 動作はこれから確認しようと思います。 大変助かりました。ありがとうございました
guest

0

一番のソリューションは、UWPで作ることだと思います。
UWPとWPFは、プログラミングは、似ているけど、内部的には、別物だよ。

投稿2017/12/11 08:41

kiichi54321

総合スコア1984

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

ibuki

2017/12/11 08:52

ありがとうございます。 そうですね、UWPでは例文がうまく通りました。 しかし同プロジェクトの他の方が、UWPはファイルアクセスのセキュリティが厳しく好きな場所にファイルを保存できないのが嫌なのでWPFを使用したい、ということになったので、WPFで動作確認をしてほしいとのことでした。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問