2016年

3月

17日

Windows 10 IoT Raspberry Pi 2  Samples「Blinky」名前空間参照エラー解決策 その2

 MaicrosoftからWindows 10 IoT Raspberry Pi 2用の「Microsoft IoT Samples」ファイルが提供されているが「Blinky」サンプルファイルを開くと「using System;」赤い下線ラインのエラーが出ている状態であった。このままでは、ソース活用並びにビルドが出来ないと思い解決策を見つけましたのでまとめておきます。

Microsoft IoT Samples「Blinky」のソースエラー状態

結論

なぜ、using System;」赤い下線ラインのエラーが出ているかと調べた結果、読み込み「参照」ファイルが無くなってしまっていることによるエラーと判明した。

サンプルファイルを制作時には「参照」に「Microsoft.NETCore.UniversalWindowsPlatform」が追加されていたが参照が何らかの原因で壊れてしまってこのような現象になってしまっているのである。

「Microsoft.NETCore.UniversalWindowsPlatform」はUWP用の.NETCoreコンポーネントのことで、これらコンポーネントをNuGetというパッケージ管理システムでインストールすることが可能。

※参考:Maicrosoft Developer Network ドキュメント 壊れた参照のトラブルシューティング

解決策

解決策として2つ目の「その2」として記載しておきます。

「参照」に「Microsoft.NETCore.UniversalWindowsPlatform」が認識されていないのでこのままの状態でビルドして自動補完させる方法をサンプルの「Blinky」にて解説しています。

MaicrosoftからWindows 10 IoT Raspberry Pi 2用に提供されている「Microsoft IoT Samples」ファイルの中の「Blinky」をクリック

ソリューションの中のMainPage.xaml.csを開くと赤い下線ラインのエラー状態です。

それでは、「参照」に「Microsoft.NETCore.UniversalWindowsPlatform」が認識させるためにこのままの状態でビルドして自動補完させます。緑の三角マークのシュミレーターをクリックします。

ビルドが完了し「Blinky」のシュミレーターが表示されます。

ビルドを停止します。

ソリューションの中のMainPage.xaml.csを開くとソリューション内に「Microsoft.NETCore.UniversalWindowsPlatform」が自動補完されusing System;」赤い下線ラインのエラーも消えています。これで完了です。

Visual Studio 2015 C# のソース記述

Blinky

 

using System;

using Windows.Devices.Gpio;

using Windows.UI.Xaml;

using Windows.UI.Xaml.Controls;

using Windows.UI.Xaml.Controls.Primitives;

using Windows.UI.Xaml.Media;

 

namespace Blinky

{

    public sealed partial class MainPage : Page

    {

        //private const int LED_PIN = 5;

        private const int LED_PIN = 47;

        private GpioPin pin;

        private GpioPinValue pinValue;

        private DispatcherTimer timer;

        private SolidColorBrush redBrush = new SolidColorBrush(Windows.UI.Colors.Red);

        private SolidColorBrush grayBrush = new SolidColorBrush(Windows.UI.Colors.LightGray);

 

        public MainPage()

        {

            InitializeComponent();

 

            timer = new DispatcherTimer();

            timer.Interval = TimeSpan.FromMilliseconds(500);

            timer.Tick += Timer_Tick;

            InitGPIO();

            if (pin != null)

            {

                timer.Start();

            }        

        }

 

        private void InitGPIO()

        {

            var gpio = GpioController.GetDefault();

 

            // Show an error if there is no GPIO controller

            if (gpio == null)

            {

                pin = null;

                GpioStatus.Text = "There is no GPIO controller on this device.";

                return;

            }

 

            pin = gpio.OpenPin(LED_PIN);

            pinValue = GpioPinValue.High;

            pin.Write(pinValue);

            pin.SetDriveMode(GpioPinDriveMode.Output);

 

            GpioStatus.Text = "GPIO pin initialized correctly.";

 

        }

 

        private void Timer_Tick(object sender, object e)

        {

            if (pinValue == GpioPinValue.High)

            {

                pinValue = GpioPinValue.Low;

                pin.Write(pinValue);

                LED.Fill = redBrush;

            }

            else

            {

                pinValue = GpioPinValue.High;

                pin.Write(pinValue);

                LED.Fill = grayBrush;

            }

        }

    }

}

▫️参考ページ

Maicrosoft Developer Network ドキュメント 壊れた参照のトラブルシューティング

 

 

目 次