質問編集履歴

2 App.xaml.csの追記

moririiin1

moririiin1 score 4

2019/07/18 16:52  投稿

UWPでのDLL読み込み
# 問題
UWPアプリでdll読み込みを行いたいのですが、
参考となりそうなドキュメントが見つけられません。
# やりたいこと
dllとして作成したアプリのBlankPage1.xamlというページを、表示用のアプリを起動したら表示するようにしたいです。
BlankPage1.xamlはボタンを一つ配置してアラートを出すだけのテストページになっています。
表示用のアプリではソリューションエクスプローラーでdllを参照するところまでできました。
BlankPage1.xaml
```xaml
<Page
   x:Class="dlluwptest.BlankPage1"
   xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
   xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
   xmlns:local="using:dlluwptest"
   xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
   xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
   mc:Ignorable="d"
   Background="{ThemeResource ApplicationPageBackgroundThemeBrush}">
   <Grid>
       <Button Content="Button" Margin="60,52,0,0" VerticalAlignment="Top" Height="275" Width="290" Click="Button_Click"/>
   </Grid>
</Page>
```
BlankPage1.xaml.cs
```cs
namespace dlluwptest
{
   /// <summary>
   /// それ自体で使用できる空白ページまたはフレーム内に移動できる空白ページ。
   /// </summary>
   public sealed partial class BlankPage1 : Page
   {
       public BlankPage1()
       {
           this.InitializeComponent();
       }
       private async void Button_Click(object sender, RoutedEventArgs e)
       {
           MessageDialog md = new MessageDialog("test");
           await md.ShowAsync();
       }
   }
}
```
C#やUWPを触り始めたばかりで初歩的な質問かもしれませんが、教えていただけたらありがたいです。
よろしくお願いします。
# 追記
表示用アプリのコード
現状、方法がわからず手を付けれていません。
```cs
namespace dlltest
{
   /// <summary>
   /// それ自体で使用できる空白ページまたはフレーム内に移動できる空白ページ。
   /// </summary>
   public sealed partial class MainPage : Page
   {
       public MainPage()
       {
           this.InitializeComponent();
       }
   }
}
```
```
App.xaml.cs
```cs
namespace dlltest
{
   /// <summary>
   /// 既定の Application クラスを補完するアプリケーション固有の動作を提供します。
   /// </summary>
   sealed partial class App : Application
   {
       /// <summary>
       ///単一アプリケーション オブジェクトを初期化します。これは、実行される作成したコードの
       ///最初の行であるため、論理的には main() または WinMain() と等価です。
       /// </summary>
       public App()
       {
           this.InitializeComponent();
           this.Suspending += OnSuspending;
       }
       /// <summary>
       /// アプリケーションがエンド ユーザーによって正常に起動されたときに呼び出されます。他のエントリ ポイントは、
       /// アプリケーションが特定のファイルを開くために起動されたときなどに使用されます。
       /// </summary>
       /// <param name="e">起動の要求とプロセスの詳細を表示します。</param>
       protected override void OnLaunched(LaunchActivatedEventArgs e)
       {
           Frame rootFrame = Window.Current.Content as Frame;
           // ウィンドウに既にコンテンツが表示されている場合は、アプリケーションの初期化を繰り返さずに、
           // ウィンドウがアクティブであることだけを確認してください
           if (rootFrame == null)
           {
               // ナビゲーション コンテキストとして動作するフレームを作成し、最初のページに移動します
               rootFrame = new Frame();
               rootFrame.NavigationFailed += OnNavigationFailed;
               if (e.PreviousExecutionState == ApplicationExecutionState.Terminated)
               {
                   //TODO: 以前中断したアプリケーションから状態を読み込みます
               }
               // フレームを現在のウィンドウに配置します
               Window.Current.Content = rootFrame;
           }
           if (e.PrelaunchActivated == false)
           {
               if (rootFrame.Content == null)
               {
                   // ナビゲーションの履歴スタックが復元されていない場合、最初のページに移動します。
                   // このとき、必要な情報をナビゲーション パラメーターとして渡して、新しいページを
                   // 作成します
                   rootFrame.Navigate(typeof(MainPage), e.Arguments);
               }
               // 現在のウィンドウがアクティブであることを確認します
               Window.Current.Activate();
           }
       }
       /// <summary>
       /// 特定のページへの移動が失敗したときに呼び出されます
       /// </summary>
       /// <param name="sender">移動に失敗したフレーム</param>
       /// <param name="e">ナビゲーション エラーの詳細</param>
       void OnNavigationFailed(object sender, NavigationFailedEventArgs e)
       {
           throw new Exception("Failed to load Page " + e.SourcePageType.FullName);
       }
       /// <summary>
       /// アプリケーションの実行が中断されたときに呼び出されます。
       /// アプリケーションが終了されるか、メモリの内容がそのままで再開されるかに
       /// かかわらず、アプリケーションの状態が保存されます。
       /// </summary>
       /// <param name="sender">中断要求の送信元。</param>
       /// <param name="e">中断要求の詳細。</param>
       private void OnSuspending(object sender, SuspendingEventArgs e)
       {
           var deferral = e.SuspendingOperation.GetDeferral();
           //TODO: アプリケーションの状態を保存してバックグラウンドの動作があれば停止します
           deferral.Complete();
       }
   }
}
```
  • C#

    10509 questions

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

  • DLL

    132 questions

    DLL(Dynamic Link Library)とは、他のモジュールからも使用する事が出来る、関数とデータが格納されているモジュールのことです。

  • XAML

    341 questions

    XAML(Extensible Application Markup Language)はWPF、Silverlight、Windows PhoneそしてWindows Store appsでユーザーインターフェースを定義するために使われるXML言語です。

  • Windows 10

    1652 questions

    Windows 10は、マイクロソフト社がリリースしたOSです。Modern UIを標準画面にした8.1から、10では再びデスクトップ主体に戻され、UIも変更されています。PCやスマホ、タブレットなど様々なデバイスに幅広く対応していることが特徴です。

  • UWP

    139 questions

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

1 コードの追記

moririiin1

moririiin1 score 4

2019/07/18 16:20  投稿

UWPでのDLL読み込み
# 問題
UWPアプリでdll読み込みを行いたいのですが、
参考となりそうなドキュメントが見つけられません。
# やりたいこと
dllとして作成したアプリのBlankPage1.xamlというページを、表示用のアプリを起動したら表示するようにしたいです。
BlankPage1.xamlはボタンを一つ配置してアラートを出すだけのテストページになっています。
表示用のアプリではソリューションエクスプローラーでdllを参照するところまでできました。
BlankPage1.xaml
```xaml
<Page
   x:Class="dlluwptest.BlankPage1"
   xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
   xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
   xmlns:local="using:dlluwptest"
   xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
   xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
   mc:Ignorable="d"
   Background="{ThemeResource ApplicationPageBackgroundThemeBrush}">
   <Grid>
       <Button Content="Button" Margin="60,52,0,0" VerticalAlignment="Top" Height="275" Width="290" Click="Button_Click"/>
   </Grid>
</Page>
```
BlankPage1.xaml.cs
```cs
namespace dlluwptest
{
   /// <summary>
   /// それ自体で使用できる空白ページまたはフレーム内に移動できる空白ページ。
   /// </summary>
   public sealed partial class BlankPage1 : Page
   {
       public BlankPage1()
       {
           this.InitializeComponent();
       }
       private async void Button_Click(object sender, RoutedEventArgs e)
       {
           MessageDialog md = new MessageDialog("test");
           await md.ShowAsync();
       }
   }
}
```
C#やUWPを触り始めたばかりで初歩的な質問かもしれませんが、教えていただけたらありがたいです。
よろしくお願いします。
よろしくお願いします。
# 追記
表示用アプリのコード
現状、方法がわからず手を付けれていません。
```cs
namespace dlltest
{
   /// <summary>
   /// それ自体で使用できる空白ページまたはフレーム内に移動できる空白ページ。
   /// </summary>
   public sealed partial class MainPage : Page
   {
       public MainPage()
       {
           this.InitializeComponent();
       }
   }
}
```
  • C#

    10509 questions

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

  • DLL

    132 questions

    DLL(Dynamic Link Library)とは、他のモジュールからも使用する事が出来る、関数とデータが格納されているモジュールのことです。

  • XAML

    341 questions

    XAML(Extensible Application Markup Language)はWPF、Silverlight、Windows PhoneそしてWindows Store appsでユーザーインターフェースを定義するために使われるXML言語です。

  • Windows 10

    1652 questions

    Windows 10は、マイクロソフト社がリリースしたOSです。Modern UIを標準画面にした8.1から、10では再びデスクトップ主体に戻され、UIも変更されています。PCやスマホ、タブレットなど様々なデバイスに幅広く対応していることが特徴です。

  • UWP

    139 questions

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

思考するエンジニアのためのQ&Aサイト「teratail」について詳しく知る