VisualStudio2022にてMAUIのプロジェクトを作成したときに表示される概要のページを表示しない方法が知りたい

けんけんけーん 80 評価のポイント
2024-11-23T16:48:32.7533333+00:00

Windows11 23H2にてVisualStudio2022Version 17.12.1を使用しています。

NetMAUIアプリで新しいプロジェクトを作成したときに以下の画面が必ず表示されます。スクリーンショット 2024-11-23 040108

あくまで新規作成時だけ表示されます。また一旦閉じると再度開く方法もわかりません。

表示しない方法を教えてほしいです。(もしわかれば再度開く方法も)

よろしくお願いします。

Visual Studio
Visual Studio
Windows、Web、モバイル デバイス用のアプリケーションを構築するための統合開発ツールの Microsoft スイートのファミリ。
103 件の質問
{count} 件の投票

承認済みの回答
  1. gekka 10,566 評価のポイント MVP
    2024-11-24T03:29:15.2366667+00:00

    再度表示する方法だけなら

    • メニュー -> プロジェクト -> 概要
    • ソリューションエクスプローラー -> プロジェクト選択 -> 右クリック -> 概要

    VisualStudioのプロジェクト新規作成ダイアログから作成する場合、テンプレートエンジンが勝手に概要ページを表示するようになっているので通常の方法では無効にできません。

    VisualStudioの外部、たとえばコマンドプロンプトで`dotnet new maui'を入力して作成したプロジェクトをソリューションに既存のプロジェクトとして追加する場合には初回表示されません。

    あるいは以下のようなVisualStudioの拡張機能を作成すれば初回表示させないことは可能です

    namespace VSIXProject1
    {
        using Microsoft.VisualStudio.Shell;
        using System;
        using System.Runtime.InteropServices;
        using System.Threading;
        using Task = System.Threading.Tasks.Task;
        using System.Linq;
    
        [PackageRegistration(UseManagedResourcesOnly = true, AllowsBackgroundLoading = true)]
        [Guid(VSIXProject1Package.PackageGuidString)]
        [ProvideAutoLoad(Microsoft.VisualStudio.Shell.Interop.UIContextGuids.SolutionExists, PackageAutoLoadFlags.BackgroundLoad)]
        [ProvideAutoLoad(Microsoft.VisualStudio.Shell.Interop.UIContextGuids.NoSolution, PackageAutoLoadFlags.BackgroundLoad)]
    
        public sealed class VSIXProject1Package : AsyncPackage
        {
            public const string PackageGuidString = "3d9892d1-6b68-4ba8-9b11-2f611d69caff";//各自GUIDを作成すること
    
            #region Package Members
            protected override async Task InitializeAsync(CancellationToken cancellationToken, IProgress<ServiceProgressData> progress)
            {
                await this.JoinableTaskFactory.SwitchToMainThreadAsync(cancellationToken);
                dte = (EnvDTE.DTE)await GetServiceAsync(typeof(EnvDTE.DTE));
                cev = dte.Events.CommandEvents;
                cev.BeforeExecute += Cev_BeforeExecute;
            }
            
            private EnvDTE.DTE dte;
            private EnvDTE.CommandEvents cev;
    
            private void Cev_BeforeExecute(string Guid, int ID, object CustomIn, object CustomOut, ref bool CancelDefault)
            {
                ThreadHelper.ThrowIfNotOnUIThread();
                try
                {
                    var cmd = dte.Commands.Item(Guid, ID);
                    if (cmd?.Name == "ShowApplicationCapabilitiesDesigner")
                    {//概要(OverView)を表示させるコマンドの名前と一致
    
                        //呼び出し元を調べる
                        bool fromOpenProject = new System.Diagnostics.StackTrace().GetFrames()
                                        .Any(_ => _.GetMethod().Name == "SolutionEvents_OnAfterOpenProject");
    
                        if (fromOpenProject)
                        {
                            //プロジェクト作成時のみコマンドキャンセル
                            CancelDefault = true;
                        }
                    }
                }
                catch(Exception ex)
                {
                    System.Diagnostics.Debug.WriteLine($"GUID={Guid}  ,ID={ID} ERR{ex.Message}");
                }
            }
    
            #endregion
        }
    }
    
    1 人がこの回答が役に立ったと思いました。

0 件の追加の回答

並べ替え方法: 最も役に立つ

お客様の回答

回答は、質問作成者が [承諾された回答] としてマークできます。これは、ユーザーが回答が作成者の問題を解決したことを知るのに役立ちます。