0

このコードをテストすると:

Console.WriteLine(SwearJarController.GetLocation());

エラーが発生します:

SwearJarController は別のプロジェクトを参照しており、関連するコードは次のとおりです。

static string baseUri = "http://maps.googleapis.com/maps/api/geocode/xml?latlng={0},{1}&sensor=false";

    public static string GetLocation()
    {
        GeoCoordinateWatcher watcher = new GeoCoordinateWatcher();
        var myPosition = watcher.Position;
        double latitude = -45.856633;
        double longitude = 170.500646;

        if (!myPosition.Location.IsUnknown)
        {
            latitude = myPosition.Location.Latitude;
            longitude = myPosition.Location.Longitude;
        }

        RetrieveFormatedAddress(latitude, longitude);



        return currentLocation;
    }


    public static void RetrieveFormatedAddress(double latitude, double longitude)
    {
        string strlat = Convert.ToString(latitude);
        string strlon = Convert.ToString(longitude);

        string requestUri = string.Format(baseUri, strlat, strlon);


        WebClient wc = new WebClient();
        {
            wc.DownloadStringCompleted += new DownloadStringCompletedEventHandler(wc_DownloadStringCompleted);
            wc.DownloadStringAsync(new Uri(requestUri));
        }

    }


    public static string currentLocation = "Unknown";

    static void wc_DownloadStringCompleted(object sender, DownloadStringCompletedEventArgs e)
    {
        try
        {
            var xmlElm = XElement.Parse(e.Result);
            var status = (from elm in xmlElm.Descendants()
                          where elm.Name == "status"
                          select elm).FirstOrDefault();
            if (status.Value.ToLower() == "ok")
            {
                var res = (from elm in xmlElm.Descendants()
                           where elm.Name == "formatted_address"
                           select elm).FirstOrDefault();
                currentLocation = res.Value;
            }
            else
            {
                currentLocation = "Unknown";
            }
        }
        catch
        {
            currentLocation = "Unknown";
        }
    }

これは、コントローラーは WP7 アプリケーションですが、テスターはコンソール アプリケーションであるという事実が原因でしょうか?

ありがとうございました!

4

1 に答える 1

0

はい。そのためですが、コンソールから試す方法があります(ユニットテストの方法)

基本的にProjectTypeGuids、WP7 アプリに合わせてノードを変更し、ファイルを保存してからプロジェクトをリロードする必要があります。ノードを次のように変更:

<ProjectTypeGuids>
    {C089C8C0-30E0-4E22-80C0-CE093F111A43};{fae04ec0-301f-11d3-bf4b-00c04f79efbc}
</ProjectTypeGuids>

その後、WP7 アセンブリを正常に参照できます。

于 2012-09-14T22:20:50.757 に答える