【VS拓展入门】<二> 创建拓展

通过开始第一个程序,了解一个VSPackage开发过程:

一、编写自己的第一个扩展:Hello World

1、新建VSIX项目(选择创建新的VSIX项目),并命名为SayHelloWorld


2、添加自定义命令,添加新建项 Command,并命名为SayHelloWorld.cs



3、修改Execute()方法中message的赋值为

        private void Execute(object sender, EventArgs e)
        {
            ThreadHelper.ThrowIfNotOnUIThread();
            string message = string.Format(CultureInfo.CurrentCulture, "Inside {0}.MenuItemCallback()", this.GetType().FullName);
            string title = "AAAAA";

            // Show a message box to prove we were here
            VsShellUtilities.ShowMessageBox(
                this.package,
                message,
                title,
                OLEMSGICON.OLEMSGICON_INFO,
                OLEMSGBUTTON.OLEMSGBUTTON_OK,
                OLEMSGDEFBUTTON.OLEMSGDEFBUTTON_FIRST);
        }

string message = "Say HelloWorld !";

4、修改SayHelloWorldPackage.vsct中元素中的的内容为:

    <Buttons>
      <!--To define a menu group you have to specify its ID, the parent menu and its display priority.
          The command is visible and enabled by default. If you need to change the visibility, status, etc, you can use
          the CommandFlag node.
          You can add more than one CommandFlag node e.g.:
              <CommandFlag>DefaultInvisible</CommandFlag>
              <CommandFlag>DynamicVisibility</CommandFlag>
          If you do not want an image next to your command, remove the Icon node /> -->
      <Button guid="guidCommand1PackageCmdSet" id="Command1Id" priority="0x0100" type="Button">
        <Parent guid="guidCommand1PackageCmdSet" id="MyMenuGroup" />
        <Icon guid="guidImages" id="bmpPic1" />
        <Strings>
          <ButtonText>Say HelloWorld !</ButtonText>
        </Strings>
      </Button>
    </Buttons>

Say SayHelloWorld!

5、按F5调试,打开一个Visual Studio 实验示例。打开“工具”菜单,点击“Say SayHelloWorld!”按钮。


6、弹出提示框:

二、Visual Studio 实验示例

Visual Studio 实验示例是为了保护你的 Visual Studio 开发环境,在运行未测试的应用程序的一个调试IDE实验。
具有 VSIX 包的每个应用程序在调试模式下启动 Visual Studio 实验实例。
如果要在特定解决方案外启动 Visual Studio 的实验实例,请在命令窗口中运行以下命令:

<VS2019安装路径> Common7IDEdevenv.exe"/RootSuffix Exp


卸载实验示例中安装的扩展Vspackage有三种方法:

  1. 重置 Visual Studio 实验实例

1.在计算机的 "开始" 页上查找 "重置 Visual Studio 实验实例 "点击
2.在命令行输入:
<VS2019安装路径>"Microsoft Visual Studio 14.0VSSDKVisualStudioIntegrationToolsBinCreateExpInstance.exe" /Reset /VSInstance=14.0 /RootSuffix=Exp

  1. 卸载扩展。

单击 "工具" " > 扩展和更新" 和 "卸载"

  1. 注销 VSPackage 程序集。

在命令行输入:
<VS2019安装路径>"Microsoft Visual Studio 14.0VSSDKVisualStudioIntegrationToolsBin egpkg" /unregister <VSPackage程序集路径>

三、Visual Studio 命令表格 (.Vsct) 文件


.Vsct文件基于 XML 的语法,描述命令表用于编译器。VSPackage 可以通过 .vsct 文件将 (UI) 元素(例如,菜单、工具栏和工具窗口)添加到 Visual Studio 的用户界面。

命令表格文件内有三种基本类型的项:菜单、命令和组。

  • 菜单可以在 UI 中作为菜单、子菜单、工具栏或工具窗口公开。
  • 命令是用户可以在 IDE 中执行的过程,它们可以作为菜单项、按钮、列表框或其他控件公开。
  • 组是用于菜单和命令的容器。


每一项由描述项的定义、其相对于其他项的优先级以及修改其行为的标志指定。

每个项都有一个描述项的父项的位置。 一个项可以有多个父项,因此它可以出现在 UI 中的多个位置。

四、Command

Command命令是向 Visual Studio 添加操作和过程的方式。
命令是在 VSPackage 项目中的 .vsct 文件中定义的。当通过新建项添加Command命令,编译器会自动在.vsct文件中添加关于命令的定义。
在Command中Execute ()的方法,是Command模板中自带的触发回调,可以通过修改触发回调实现不同效果。
 

  • 2
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
在MATLAB中,可以使用拓展观测器(Extended Kalman Filter)来进行系统状态估计。拓展观测器是一种基于卡尔曼滤波器的变体,用于非线性系统的状态估计。以下是一些在MATLAB中使用拓展观测器的步骤: 1. 定义系统模型和观测模型:首先,需要定义系统模型和观测模型的方程。系统模型描述了系统的状态转移过程,观测模型描述了观测值与系统状态之间的关系。 2. 初始化拓展观测器:在MATLAB中,可以使用`extendedKalmanFilter`函数来初始化拓展观测器对象。通过传入系统模型和观测模型的方程,以及初始状态和协方差矩阵,可以创建一个拓展观测器对象。 3. 更新拓展观测器:在每个时间步骤中,通过调用`correct`方法,将观测值传入拓展观测器对象,从而更新状态估计。 4. 预测下一个状态:通过调用`predict`方法,可以获得下一个时间步骤的预测状态和协方差矩阵。 下面是一个简单的示例代码,演示了如何在MATLAB中使用拓展观测器进行状态估计: ```matlab % 定义系统模型和观测模型的方程 systemModel = @(x) x + randn(size(x))*0.1; % 系统模型:状态转移函数 observationModel = @(x) x.^2/20; % 观测模型:观测函数 % 初始化拓展观测器 initialState = 0; % 初始状态 initialCovariance = 1; % 初始协方差矩阵 ekf = extendedKalmanFilter(systemModel, observationModel, initialState, initialCovariance); % 模拟观测值 T = 10; % 时间步数 observations = zeros(1, T); for t = 1:T observations(t) = observationModel(systemModel(initialState)) + randn*0.5; end % 使用拓展观测器进行状态估计 estimatedStates = zeros(1, T); for t = 1:T % 更新拓展观测器 ekf.correct(observations(t)); % 预测下一个状态 estimatedStates(t) = ekf.State; ekf.predict(); end % 绘制结果 figure; plot(1:T, observations, 'bo-', 'LineWidth', 1.5); hold on; plot(1:T, estimatedStates, 'r.-', 'LineWidth', 1.5); legend('观测值', '估计状态'); xlabel('时间步数'); ylabel('状态值'); ``` 这是一个简单的示例,仅用于演示拓展观测器的基本用法。在实际应用中,可能需要根据具体的问题进行模型的设计和参数调整。希望这个示例能帮助你入门拓展观测器在MATLAB中的应用。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值