0

JavaScript メトロ アプリケーションに取り組んでいますが、JavaScript から C# コードを呼び出すには、ソリューションで Windows ランタイム コンポーネント プロジェクトを使用する必要があることがわかりました。ここで、「images」フォルダーの JavaScript メトロ アプリケーションに追加された画像を確認する必要があります。それらが存在する場合は、アプリケーションのローカル フォルダーにコピーする必要があります。

まずはメソッドを使ってみた

Windows.Storage.StorageFile.GetFileFromApplicationUriAsync(new Uri("ms-appx:///images/logo.png"))

しかし、場所/ファイルパスが見つからないという例外がスローされます。

プロジェクトの名前空間が異なるためではないかと思いました。画像は JavaScript メトロ アプリケーション プロジェクトに追加され、Windows ランタイム コンポーネント プロジェクトから使用しようとしています。

そこで、「E://projects/myProject/myProject/images/logo.png」のような画像ファイルのハードコードされたパスを渡して、メソッドで試してみました

Windows.Storage.StorageFile.GetFileFromPathAsync(<passed the above path>); 

ただし、ファイルパスが正しい形式ではないという例外がスローされます。

JavaScript メトロ アプリケーション プロジェクトに追加されたファイルに、同じソリューション内の Windows ランタイム コンポーネント プロジェクトからアクセスできますか? そして、それをアプリケーションのローカル フォルダーにコピーしますか?

ありがとう。

4

1 に答える 1

0

これは機能するはずです。C# の新しい WinRT コンポーネントを使用して、新しい JS プロジェクトでコードの最初の行を試しました。それはうまくいきました。コンポーネント内の C# クラス全体と、それを呼び出している JS コードをさらに表示できますか?

テスト用の .cs コードは次のとおりです。

using System;
using Windows.Storage;

namespace Test2
{
    public sealed class Class1
    {
        public async void TestAccess()
        {
            StorageFile file = await Windows.Storage.StorageFile.GetFileFromApplicationUriAsync(new Uri("ms-appx:///images/logo.png"));
        }
    }
}

そしてそれを呼び出すJSコード:

var obj = new Test2.Class1();
obj.testAccess();            

また、logo.png ファイルが JS プロジェクトにあることも確認しましたか?

于 2014-02-24T00:24:41.193 に答える