どうすればこのモバイルアプリケーション開発の問題を解決できますか?この「パスが見つかりません」というエラーを修正するにはどうすればよいですか?
するDB
dataSource = \\..datafile.sdf
に接続している間、私は
私は、データアクセスのためのserviceCE DLLを使用しています
"パスが見つかりません" このエラーが発生します。
どうすればこのモバイルアプリケーション開発の問題を解決できますか?この「パスが見つかりません」というエラーを修正するにはどうすればよいですか?
するDB
dataSource = \\..datafile.sdf
に接続している間、私は
私は、データアクセスのためのserviceCE DLLを使用しています
"パスが見つかりません" このエラーが発生します。
\\と..の間に何かがないと思われます。
"\ .."は意味がありません。これは、データが存在しないルートフォルダの1つ上にあることを示します。さらに、ctackeは、CEが相対パスをサポートしていないとのコメントを私に伝えています。
ご使用のOSで相対パスがである場合、残りの回答は引き続き適用されます。私は将来の参照のために残しておきます(そして、おそらく、多くの人が最初に投稿全体を読まずにダウンボートしているように見えます)。 :-)
データファイルがアプリケーションのフォルダの1つ上にある場合、正しいパスは '.. \ datafile.sdf'になります。いくつかのプログラミング言語では、バックスラッシュをエスケープする必要がありますので、 '.. \ datafile.sdf'になります
あなたのデータはどこにありますか?アプリが\ yourapp \ folder \ binにあり、データが\ yourapp \ folder \ dataにある場合、アプリからデータへのパスは「.. \ data \」になります。データファイルが\ yourapp \フォルダにある場合、パスは '.. \'になります。繰り返しますが、使用している言語に応じてバックスラッシュを二重にしてエスケープする必要があります。
Windows CEには相対パスの概念がないため、無効な相対パスを「固定」しても機能しません。絶対パスを使用する必要があります。
入力したパスは相対パスです。 Windows CE/Mobileは、相対パスをサポートしていません。
Windows Mobileデバイスにカレントディレクトリの概念がないため、相対パスのみがわかっているリソースをどのように見つけることができますか? .Netプログラムは、いつもそれが構成されているモジュールにアクセスします(通常、.Netコンポーネントは、DLLまたはEXEファイルにパッケージされた1つのモジュールで構成されています)。次の行は、現在実行中のアセンブリへの絶対パスを返します。
string modulePath = this.GetType()。Assembly.GetModules()[0] .FullyQualifiedName;もう少しコードで
あなたはあなたのプログラムが
Path.GetDirectoryNameを実行されているディレクトリを取得することができます(this.GetType()。Assembly.GetModules()[0] .FullyQualifiedName)
を使用してその情報を使用して、リソースへの適切なパス文字列を作成できます。
注:あなたはネイティブAPIを使用して開発している場合は使用以下: GetModuleFileNameは(のGetModuleHandle(NULL)、pszFullPath、MAX_PATH);
あなたが後になっているファイルがフォルダではなく「サブデバイス」である場合(私は用語が分かりませんが、Windowsエクスプローラではデバイスが「サブデバイス」または「スーパーフォルダ」に分かれていますそれはあなたがアクセスしたいものですか?私の.exeは1つの "サブデバイス"にあり、バージョン情報を読み、必要に応じて置き換える必要がある.exeは別の "サブデバイス"にあります。 .. –
CEには相対パスはありません。 – ctacke
今後の参考にご利用ください。 CEを除外するように投稿を修正します。訂正してくれてありがとう。 –