ビジュアル スタイルを使用すると、ユーザーが選択したテーマに基づいて共通コントロールの外観を変更できます。 既定では、Windows Presentation Foundation (WPF) アプリケーションではビジュアル スタイルが有効になっていないため、手動で有効にする必要があります。 ただし、WPF アプリケーションのビジュアル スタイルを有効にしてからソリューションを発行すると、エラーが発生します。 このトピックでは、このエラーを解決する方法と、ビジュアル スタイルが有効になっている WPF アプリケーションを発行するプロセスについて説明します。 ビジュアル スタイルの詳細については、「ビジュアル スタイルの概要」を参照してください。 エラー メッセージの詳細については、「 ClickOnce 配置での特定のエラーのトラブルシューティング」を参照してください。
エラーを解決してソリューションを発行するには、次のタスクを実行する必要があります。
アプリケーション マニフェストと配置マニフェストに署名します。
その後、公開されたファイルを、エンド ユーザーがアプリケーションをインストールする場所に移動できます。
ビジュアル スタイルを有効にせずにソリューションを発行する
プロジェクトでビジュアル スタイルが有効になっていないことを確認します。 まず、プロジェクトのマニフェスト ファイルで次の XML を確認します。 次に、XML が存在する場合は、コメント タグで XML を囲みます。
既定では、ビジュアル スタイルは有効になっていません。
<dependency> <dependentAssembly> <assemblyIdentity type="win32" name="Microsoft.Windows.Common-Controls" version="6.0.0.0" processorArchitecture="*" publicKeyToken="6595b64144ccf1df" language="*" /> </dependentAssembly> </dependency>
次の手順では、プロジェクトに関連付けられているマニフェスト ファイルを開く方法を示します。
Visual Basic プロジェクトでマニフェスト ファイルを開くには
メニュー バーで、[ Project]、[ ProjectNameプロパティ] の順に選択します。 ProjectName は WPF プロジェクトの名前です。
WPF プロジェクトのプロパティ ページが表示されます。
[ アプリケーション ] タブで、[ Windows 設定の表示] を選択します。
app.manifest ファイルが コード エディターで開きます。
C# プロジェクトでマニフェスト ファイルを開くには
メニュー バーで、[ Project]、[ ProjectNameプロパティ] の順に選択します。 ProjectName は WPF プロジェクトの名前です。
WPF プロジェクトのプロパティ ページが表示されます。
[ アプリケーション ] タブで、マニフェスト フィールドに表示される名前を書き留めます。 これは、プロジェクトに関連付けられているマニフェストの名前です。
注
既定の設定でマニフェストを埋め込むか、マニフェストを使用しないアプリケーションの作成がマニフェスト フィールドに表示される場合、ビジュアル スタイルは有効になりません。 マニフェスト フィールドにマニフェスト ファイルの名前が表示される場合は、この手順の次の手順に進みます。
ソリューション エクスプローラーで、[すべてのファイルを表示] を選択します。
このボタンには、除外された項目や通常は非表示になっているものも含め、すべてのプロジェクト項目が表示されます。 マニフェスト ファイルがプロジェクト項目として表示されます。
ソリューションをビルドして発行します。 ソリューションを発行する方法の詳細については、「 方法: 発行ウィザードを使用して ClickOnce アプリケーションを発行する」を参照してください。
マニフェスト ファイルを作成する
次の XML をメモ帳ファイルに貼り付けます。
この XML では、ビジュアル スタイルをサポートするコントロールを含むアセンブリについて説明します。
<?xml version="1.0" encoding="utf-8"?> <asmv1:assembly manifestVersion="1.0" xmlns="urn:schemas-microsoft-com:asm.v1" xmlns:asmv1="urn:schemas-microsoft-com:asm.v1" xmlns:asmv2="urn:schemas-microsoft-com:asm.v2" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"> <dependency> <dependentAssembly> <assemblyIdentity type="win32" name="Microsoft.Windows.Common-Controls" version="6.0.0.0" processorArchitecture="*" publicKeyToken="6595b64144ccf1df" language="*" /> </dependentAssembly> </dependency> </asmv1:assembly>
メモ帳で、[ ファイル] をクリックし、[ 名前を付けて保存] をクリックします。
[ 名前を付けて保存 ] ダイアログ ボックスの [ 名前を付けて保存] ドロップダウン リストで、[ すべてのファイル] を選択します。
[ ファイル名 ] ボックスで、ファイルに名前を付け、ファイル名の末尾に .manifest を追加します。 たとえば、 themes.manifest です。
[ フォルダーの参照 ] ボタンを選択し、任意のフォルダーを選択して、[ 保存] をクリックします。
注
残りの手順では、このファイルの名前が themes.manifest であり、ファイルがコンピューター上の C:\temp ディレクトリに保存されていることを前提としています。
発行済みソリューションの実行可能ファイルにマニフェスト ファイルを埋め込む
Visual Studio の開発者コマンド プロンプト開きます。
Visual Studio の開発者コマンド プロンプトを開く方法の詳細については、「 開発者コマンド プロンプトと開発者 PowerShell」を参照してください。
注
残りの手順では、ソリューションに関して次の前提条件を設定します。
ソリューションの名前は MyWPFProject です。
ソリューションは、次のディレクトリにあります:
%UserProfile%\Documents\Visual Studio version\Projects\
。ソリューションは、次のディレクトリに発行されます:
%UserProfile%\Documents\Visual Studio version\Projects\publish
。発行されたアプリケーション ファイルの最新バージョンは、次のディレクトリにあります。
%UserProfile%\Documents\Visual Studio version\Projects\publish\Application Files\WPFApp_1_0_0_0
上記の名前またはディレクトリの場所を使用する必要はありません。 上記の名前と場所は、ソリューションを発行するために必要な手順を示すためにのみ使用されます。
コマンド プロンプトで、発行されたアプリケーション ファイルの最新バージョンを含むディレクトリへのパスを変更します。 次の例では、この手順を示します。
cd "%UserProfile%\Documents\Visual Studio version\Projects\MyWPFProject\publish\Application Files\WPFApp_1_0_0_0"
コマンド プロンプトで、次のコマンドを実行して、マニフェスト ファイルをアプリケーションの実行可能ファイルに埋め込みます。
mt -manifest c:\temp\themes.manifest -outputresource:MyWPFApp.exe.deploy
アプリケーション マニフェストと配置マニフェストに署名する
コマンド プロンプトで、次のコマンドを実行して、現在のディレクトリ内の実行可能ファイルから .deploy 拡張子を削除します。
ren MyWPFApp.exe.deploy MyWPFApp.exe
注
この例では、 .deploy ファイル拡張子を持つファイルが 1 つだけであることを前提としています。 . deploy ファイル拡張子を持つこのディレクトリ内のすべてのファイルの名前を必ず変更してください。
コマンド プロンプトで、次のコマンドを実行してアプリケーション マニフェストに署名します。
mage -u MyWPFApp.exe.manifest -cf ..\..\..\MyWPFApp_TemporaryKey.pfx
注
この例では、プロジェクトの .pfx ファイルを使用してマニフェストに署名することを前提としています。 マニフェストに署名しない場合は、この例で使用する
-cf
パラメーターを省略できます。 パスワードを必要とする証明書を使用してマニフェストに署名する場合は、-password
オプション (For example: mage -u MyWPFApp.exe.manifest -cf ..\..\..\MyWPFApp_TemporaryKey.pfx - password Password
) を指定します。コマンド プロンプトで、次のコマンドを実行して、この手順の前の手順で名前を変更したファイルの名前に .deploy 拡張子を追加します。
ren MyWPFApp.exe MyWPFApp.exe.deploy
注
この例では、 .deploy ファイル拡張子を持つファイルが 1 つだけであることを前提としています。 以前に .deploy ファイル名拡張子が付いていたこのディレクトリ内のすべてのファイルの名前を変更してください。
コマンド プロンプトで、次のコマンドを実行して配置マニフェストに署名します。
mage -u ..\..\MyWPFApp.application -appm MyWPFApp.exe.manifest -cf ..\..\..\MyWPFApp_TemporaryKey.pfx
注
この例では、プロジェクトの .pfx ファイルを使用してマニフェストに署名することを前提としています。 マニフェストに署名しない場合は、この例で使用する
-cf
パラメーターを省略できます。 パスワードを必要とする証明書を使用してマニフェストに署名する場合は、次の例のように-password
オプションを指定します:For example: mage -u MyWPFApp.exe.manifest -cf ..\..\..\MyWPFApp_TemporaryKey.pfx - password Password
。これらの手順を実行したら、公開されたファイルを、エンド ユーザーがアプリケーションをインストールする場所に移動できます。 ソリューションを頻繁に更新する場合は、これらのコマンドをスクリプトに移動し、新しいバージョンを発行するたびにスクリプトを実行できます。