ポータブルクラスライブラリ(Portable Class Library)を使った開発


Channel 9のVisual Studio Toolbox:Portable Class Libraries より

https://channel9.msdn.com/Shows/Visual-Studio-Toolbox/Visual-Studio-ToolboxPortable-Class-Libraries

 

Silverlight、Windows Phone、Windows Metro スタイルアプリ、それぞれXAMLとC#で開発できることはご存知だと思います。

同じ言語を使っているんだから、できる限り、ロジックを共有して、効率よく開発したい、と願う開発者の方に、ぜひチャレンジしていただきたいのが、ポータブルクラスライブラリです。

Portable Class Library (MSDNライブラリー 英語)

http://msdn.microsoft.com/en-us/library/gg597391(v=vs.110).aspx

Visual Studio 2012から、ポータブルクラスライブラリというプロジェクトテンプレートが用意されています。

Visual Studio 2010をお使いの方は、Portable Library Tools 2 Betaをダウンロードすると、利用できるようになります。

http://visualstudiogallery.msdn.microsoft.com/b0e0b5e9-e138-410b-ad10-00cb3caf4981

ポータブルクラスライブラリは、複数の異なる.NET Framework プラットフォームで動作するライブラリの開発にご利用いただけます。

 

利用できるプラットフォーム

Platform

Versions

.NET Framework

.NET Framework 4 and later (*)

Update 4.0.3 and later platform updates for the .NET Framework 4

.NET Framework 4.5 RC

Silverlight

Silverlight 4 and later (*)

Silverlight 5

Windows Phone

Windows Phone 7 and later (*)

Windows Phone 7.5

.NET for Metro style apps (*)

N/A

Xbox 360

N/A

 (*)マークのあるものは、プロジェクトの既定値に含まれているものです。

 

 利用できるアセンブリ

 

Feature

Assemblies

.NET Framework

Metro style

Silverlight

Windows Phone

Xbox 360

Core

mscorlib.dll, System.dll, System.Core.dll, System.Xml.dll, System.Xml.Serialization.dll

Managed Extensibility Framework (MEF)

System.ComponentModel.Composition.dll

Network Class Library (NCL)

System.Net.dll

Serialization

System.Runtime.Serialization.dll

Windows Communication Foundation (WCF)

System.ServiceModel.dll, System.ServiceModel.Web.dll

Model-View-View Model (MVVM)

System.Windows.dll

Only 4.5

Data annotations

System.ComponentModel.DataAnnotations.dll

Only 4.0.3 and 4.5

LINQ to XML

System.Xml.Linq.dll

Only 4.0.3 and 4.5

.NET for Metro styles apps

See .NET APIs for Metro style apps.

Only 4.5

ポータブルクラスライブラリの開発においては、Windows.UI.Xaml 名前空間は利用できませんので、ご注意ください。

MVVMのサポート

.NET Framework 4.5 RC、 .NET for Metro スタイルアプリ、 Silverlight、Windows Phone 7.5をターゲットとする場合、MVVMの実装を行えます。

System.Windows.dll アセンブリに次のクラスが含まれます。

ポータブルクラスライブラリを利用したMVVMパターンの開発

http://msdn.microsoft.com/en-us/library/hh563947(v=vs.110).aspx

このURLを開くと、ポータブルクラスライブラリを利用したMVVMでの開発について説明があります。

 

 

MVVMの開発について、ざくっと学ぶには、次の文書を頑張って読みましょう。

MVVM QuickStart (patterns & practices)

http://msdn.microsoft.com/en-us/library/gg430869(v=PandP.40).aspx

 

作成したポータブルクラスライブラリを利用するのは、プロジェクトの参照設定をするだけです。

後は、ModelやViewModel部分をうまくライブラリーに実装し、開発に役立ててください。View部分は、プラットフォーム依存なので、個別のプロジェクトを作成し、ポータブルクラスライブラリを参照して、後は、ViewModelをViewとつなげます。

例: http://msdn.microsoft.com/en-us/library/hh563947(v=vs.110).aspx に記載されているコードより

<Window x:Class="SimpleWPF.MainWindow"
        xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
        xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
        xmlns:viewModels="clr-namespace:SimpleMVVM.ViewModel;assembly=SimpleMVVM.ViewModel"
        Title="MainWindow" Height="350" Width="525">
    <Window.Resources>
        <viewModels:MainPageViewModel x:Key="ViewModel" />
    </Window.Resources>
    <Grid DataContext="{Binding Source={StaticResource ViewModel}}">
        <Grid.ColumnDefinitions>
            <ColumnDefinition></ColumnDefinition>
            <ColumnDefinition></ColumnDefinition>
        </Grid.ColumnDefinitions>
        <Grid.RowDefinitions>
            <RowDefinition Height="Auto"></RowDefinition>
            <RowDefinition Height="Auto"></RowDefinition>
            <RowDefinition Height="Auto"></RowDefinition>
            <RowDefinition Height="Auto"></RowDefinition>
            <RowDefinition Height="Auto"></RowDefinition>
        </Grid.RowDefinitions>
        <TextBlock Height="23" Margin="5" HorizontalAlignment="Right" Grid.Column="0" Grid.Row="0" Name="textBlock2"
                   Text="Select a Customer:" VerticalAlignment="Top" />
        <ComboBox Height="23" HorizontalAlignment="Left" Grid.Column="1" Grid.Row="0" Name="CustomersComboBox" VerticalAlignment="Top" Width="173"
                  DisplayMemberPath="FullName" SelectedItem="{Binding Path=CurrentCustomer, Mode=TwoWay}" ItemsSource="{Binding Path=Customers}" />
        <TextBlock Height="23" Margin="5" HorizontalAlignment="Right" Grid.Column="0" Grid.Row="1" Name="textBlock4" Text="Customer ID" />
        <TextBlock Height="23" Margin="5" HorizontalAlignment="Right" Grid.Column="0" Grid.Row="2" Name="textBlock5" Text="Name" />
        <TextBlock Height="23" Margin="5" HorizontalAlignment="Right" Grid.Column="0" Grid.Row="3" Name="textBlock9" Text="Phone" />
        <TextBlock Height="23" HorizontalAlignment="Left" Grid.Column="1" Grid.Row="1" Name="CustomerIDTextBlock"
                   Text="{Binding ElementName=CustomersComboBox, Path=SelectedItem.CustomerID}" />
        <TextBox Height="23" HorizontalAlignment="Left" Grid.Column="1" Grid.Row="2" Width="219"
                 Text="{Binding Path=CurrentCustomer.FullName, Mode=TwoWay}" />
        <TextBox Height="23" HorizontalAlignment="Left" Grid.Column="1" Grid.Row="3" Width="219"
                 Text="{Binding Path=CurrentCustomer.Phone, Mode=TwoWay}" />
        <Button
            Command="{Binding UpdateCustomerCommand}"
            Content="Update" Height="23" HorizontalAlignment="Right" Grid.Column="0" Grid.Row="4"
            Name="UpdateButton" VerticalAlignment="Top" Width="75" />
    </Grid>
</Window> 

 

以上、皆さんもチャレンジしてはいかがでしょうか。

 

最後に余談: このビデオに出ているDaniel Plaistedさん (画面右側)とは、Windows Developer DaysのWA-021セッションに向けた準備期間に何度か情報交換させていただきました。ありがとうございます。

WA-021セッションの最後でポータブルクラスライブラリの話をした際、このビデオに登場しているソリューションを改変したものをちらっとだけお見せしています。

Comments (0)

Skip to main content