首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

-#5 VSX基本概念

为了访问到COM对象,.NET提供了一种被称为interoperability程序东西,简单来讲,就是用.NET类型来包装了COM类型。...这些interop程序名字以Microsoft.VisualStudio开头,但不是所有以这个开头程序都是interop程序。在这个文件夹下面,你可以看到差不多100个程序文件。...Managed Package Framework中程序 MPF程序interop程序(以及其VSX相关程序)在同一个文件夹中,并且也是以Microsoft.VisualStudio...以9.0结尾程序是针对于VS 2008,如果你用VS 2008开发,你应该用这个程序,以便regpkg.exe可以注册你编译后package。...Visual Studio提供了interop程序来访问COM类型;MPF(Managed Package Framework)对interop程序做了一层包装,允许用“本地化”托管代码开发Package

87820
您找到你想要的搜索结果了吗?
是的
没有找到

VsxHowTo-把Windows Forms Designer作为自己编辑器(1)

这是因为这篇文章目的是如何重用WinForm Designer,而暂不涉及文件读取和存储,我会在后续文章里逐步完善DocumentData。...Microsoft.VisualStudio.Designer.Interfaces.IVSMDDesignerService接口(要使用该接口,要添加对Microsoft.VisualStudio.Designer.Interfaces程序引用...实例,接着创建了一个DesignerLoader实例,然后就调用IVSMDDesignerService.CreateDesigner方法创建了一个IVSMDDesigner对象,该对象View...最后,把View和DocumentData对象指针赋给相应out参数。...注册Editor Factory 注册DocumentEditorFactory方法和注册其他Editor Factory方法一样,即在Package初始化时候,调用RegisterEditorFactory

79320

-#1 如何开始VSX开发?

如果你用宏来扩展VS,宏那么所有人都可以看到你源代码,但是一个Add-in是编译了程序,所以你可以像其他.NET 程序一样,使用一些保护技术来保护你代码。...要发布插件,你只需要简单创建一个安装项目并编译出.msi文件就可以了。msi程序会做你Add-in需要所有的安装和注册任务,安装后你就可以立即使用插件了。...但在这个系列中,我并不会关注如何开发Add-ins,不过Add-in中那些用于VS Package技术,尤其是如何使用VS IDE提供对象模型,是非常有用。...微软说,“要成功开发VsPackage你必须学习interop程序”。这是一个非常怪异说法,会花费我们大量时间。...我不想说你必须学习interop程序,我宁愿说你必须理解VS Package背后基本概念。所以请和我一起探险:让我们破解开发VS扩展包之谜!

61520

服务器是干嘛

查询注册表,启动CLSID对应COM服务器,并激活COM对象。 2. 根据IID获取COM指针,然后调用COM对象提供服务。...需要知道要激活DCOM对象CLSID,这样CLR才能让COM运行库查询注册表,启动注册表CLSID下面的LocalServer32设置可执行程序(我们例子里,是sserver.exe)。...获取已经激活DCOM对象指针,接着再是查询对应COM接口,本文例子里是IStream接口,这样在C#程序里面才能调用。...但是又涉及到另外一个问题,C#是强类型语言,所有的对象调用都是要有明确类型定义。为了解决这个问题,我们需要在C#程序里自己定义好COM对象和接口定义。...为了解决上面两步操作,CLR团队提供了tlbimp.exe这个程序,这个程序需要一个类型库(.tlb)文件,从类型库中获取COM对象和接口定义,然后将这些定义转换成C#定义,最后将C#定义封装到一个所谓

7.2K30

Unity3d底层数据传递分析

WeTest 导读 这篇文章主要分析了在Mono框架下,非托管堆、运行时、托管堆如何关联,以及通过哪些方式调用。内存方面,介绍了什么是封送,以及类和结构体关系和区别。...一 托管交互(Interop) 在Mono官方文档(http://www.mono-project.com/docs/advanced/embedding/)中有关于嵌入原理描述。...内部调用 内部调用是在C++中注册调用,并直接访问托管对象,控制Marshall。例如,我们要返回字符串,就先要在C++中显示注册接口。 ? 然后在C#中声明下面的函数: ?...所以优化策略是:每个析构类都是叶子结点,主干是则是由这些互不引用叶子组成树。 六 总结 篇文章主要分析了在Mono框架下,非托管堆、运行时、托管堆如何关联,以及通过哪些方式调用。...).aspx https://docs.microsoft.com/en-us/dotnet/framework/interop/interop-marshaling http://www.uml.org.cn

1.3K20

-#2 创建一个空VS Package

如上图所示,我们选择C#作为该Package开发语言,另外,由于VS Package必须被强命名,所以我们需要一个key文件来给我们package程序进行签名,在这里我们利用向导帮我们自动生成一个...可以看到,在项目引用中,包含很多interop assembly,这些程序帮助我们与Visual Studio IDE中COM对象交互,并提供package需要service。...你也许发现了项目引用中System.Core.dll,这个程序是.Net Framework 3.5一部分,这和我们一开始创建项目的时候选择.NET Framework 2.0有些矛盾,不过没关系...定义程序信息 Package.ico 该package图标 Resources.resx package级别的资源文件(初始时候是空文件) GlobalSupressions.cs Global...它是如何工作? 现在是时候去查看这些代码并弄清楚我们package是如何工作了。为了使代码可读性更好,我将忽略掉注释和不重要部分。

1K10

Unity3d底层数据传递分析

原文链接:http://wetest.qq.com/lab/view/370.html WeTest 导读 --------- 这篇文章主要分析了在Mono框架下,非托管堆、运行时、托管堆如何关联,以及通过哪些方式调用...,是最简单Interop方式。...内部调用 内部调用是在C++中注册调用,并直接访问托管对象,控制Marshall。例如,我们要返回字符串,就先要在C++中显示注册接口。...所以优化策略是:每个析构类都是叶子结点,主干是则是由这些互不引用叶子组成树。 六、总结 ---- 篇文章主要分析了在Mono框架下,非托管堆、运行时、托管堆如何关联,以及通过哪些方式调用。...).aspxhttps://docs.microsoft.com/en-us/dotnet/framework/interop/interop-marshalinghttp://www.uml.org.cn

3.6K21

2019-1-8-看看你PPT是不是被WPS玩坏了

这可苦了我们这些office二次开发程序员 ---- 今天在C#调用PPT时遇到了一个异常,内容大致是这样 System.InvalidCastException was unhandled Message...=Unable to cast COM object of type 'Microsoft.Office.Interop.PowerPoint.ApplicationClass' to interface...这实际上是COM组件调用一个问题,每个COM组件会有一个接口IDIID,另外每一个实现该接口CLSID 那么既然一个接口可以有多个实现,那么具体哪个实现才是需要呢?...这一切就是依赖于注册表控制。 啊,注册表这个东西,大家说改就改了呀。 你注册表被谁改了 首先是去注册HKEY_CLASSES_ROOT中查找对应接口IID ?...国产软件值得支持,但是这样破坏注册行为还是希望可以改善 参考链接: C#: PPT to PDF-Unable to Cast COM Object of Type ‘Microsoft.Office.Interop.PowerPoint

95030

WPF实现基础控件之托盘示例代码分享

创建托盘程序主要借助与 Win32API:注册窗体对象RegisterClassEx。注册消息获取对应消息标识Id RegisterWindowMessage。...创建窗体(本质上托盘在创建时需要一个窗口句柄,完全可以将主窗体句柄给进去,但是为了更好管理消息以及托盘生命周期,通常会创建一个独立不可见窗口)CreateWindowEx。... true;        }        ///         ///     注册并创建窗口对象        ///         /// <param...                lpszMenuName = string.Empty,                lpszClassName = className            };            //注册窗体对象...,但是为了更好管理消息以及托盘生命周期,通常会创建一个独立不可见窗口)            _TrayWindowHandle = User32Interop.CreateWindowEx(0,

63300

【3】利用Word模板生成文档总结

由于DsoFramer是COM时代产物,适用于VB、VC开发者,在 .Net下开发,或者进行Web应用开发,就显得有点力不从心。在实际开发中,常常出现一些莫名其妙错误。...使用Interop进行开发 微软在.Net框架下,推出了Microsoft.Office.Interop.Word及其互操作方式,能够更好地对Office文档进行二次开发。...使用Interop进行二次开发,首先需要了解Word对象结构,完整Word对象结构图如下(来自官方VBA_Word帮助文件): ?...Application: 用来表现WORD应用程序,包含其它所有对象。他成员经常应用于整个Word,可以用它属性和方法控制Word环境。...打开关闭和写入操作 了解到Word对象结构后,就可以考虑怎样操作了。 1、如何打开和关闭Application及Document对象

2.4K50

极速40分钟写出SQLite数据展示与导出功能【技术创作101训练营】

话说之前突发奇想让已经淘汰安卓手机继续发光发热,就写了一个弱网络下智慧就餐登记安卓程序。给饭堂用了几天感觉良好,但发现登记好了数据不好导出也不好统计。...于是趁周六早上,就随手写一了一个简单win程序;也没想到这么快搞掂,所以就跟大伙分享一下过程吧。。 首先我当时用是SQLite,那程序只需要跟SQLite直接连接就是了。...答案是直接引用SQLite 组件【https://github.com/praeclarum/sqlite-net】就可以了,上代码。。...,因为我这边要两表关联及统计。。。...{ MessageBox.Show("无法创建Excel对象,可能您机子未安装Excel"); return;

1.1K4240

使用LogParser分析日志

Log Parser可以到微软网站下载,安装完后,就会有命令行执行程序LogParser.exe,供API使用LogParser.dll及说明文件LogParser.chm,里面还会有一些Sample...通过 .NET Framework COM interopCOM 交互操作)特性,可以很方便地在 .NET 应用程序中使用 Log Parser,.NET Framework COM interop...是通过 Runtime Callable Wrappers (RCW) 来实现对 COM 操作,RCW 是 .NET 中一个类。...现在要玩是,怎么用LogParser.dll来开发更适合API,其实命令行做法就可以满足大部份需求,但有时有时特殊判断,在命令行模式下就有难度了,比如说,我们需要用程序自动去处理大批量日志文件分析等...注意:LogParser.dll是需要注册,如果没有注册,是会抛出错误信息,注册方式很简单,也就是注册Com组件,在命令行模式下 : C:\LogParser>regsvr32 LogParser.dll

2.2K70

聊聊微前端原理和实践

本文首发于 vivo互联网技术 微信公众号 链接:https://mp.weixin.qq.com/s/2qH9qMNpU_LuLEBTsDUKzA 作者:Tan Xin 本文对微前端概念和场景进行科普...,介绍一些主流微前端实现库及其用法,并讲解部分这些库原理和实践知识。...在入口中我们注册了子应用,并确定了子应用激活时机。 子应用资源配置表是完全自定义,只要入口加载器这边按照约定规范来解析加载资源,并按照single-spa生命周期钩子来处理好这些资源挂载。...先来看下: import { setPublicPath } from 'systemjs-webpack-interop' setPublicPath('app1', 2) 从名字也能看出,systemjs-webpack-interop...提供了js沙箱,子应用挂载时,会对全局window对象代理、对全局事件监听进行劫持等,确保各子应用都运行在自己沙箱内,这样也就避免了js冲突。

2K30

实现一个C#调用C++示例

什么是COM InteropCOM Interop 是一种让 .NET Framework 程序能够和 COM 程序相互操作一种桥接技术[维基百科]。...它可以让 .NET Framework 程序使用 COM 组件,也可以让 COM 程序使用 .NET Framework 组件。...COM对象是建立在二进制可执行代码级基础上,而C++等语言中对象是建立在源代码级基础上,因此COM对象是语言无关。   这一特性使用不同编程语言开发组件对象进行交互成为可能。   ...使用 Tlbimp 转换 COM DLL 现在有了 COM DLL,让我们来看看如何从一个托管客户端访问它。打开 Visual Studio 命令提示,然后转到创建 COM DLL 目录。...小结   由于时间有限,昨天开始研究COM Interop,到今晚刚刚实现一个成功例子,对COM技术认识肯定还有很多问题,这里做下总结,也希望以后能继续完善。

2.1K70
领券