我试图弄清楚如何在 VS2010 上安装单文件生成器。以前,经过数小时的头撞后,我在 VS2013 上工作了;在这两种情况下,主要的困难是设置注册表项。显然 VSIX 文件不允许注册表设置:
您可以使用 VSIX 格式来打包项目和项模板、Visual Studio 集成包、托管扩展性框架 (MEF) 组件、工具箱控件、程序集和自定义类型。VSIX 格式严格使用基于文件的部署,不支持写入全局程序集缓存 (GAC) 或系统注册表。VSIX 是其支持的扩展类型的首选部署方法。
我的 VS2013 解决方案涉及程序集上的CodeGeneratorRegistrationAttribute
and ,但安装后,扩展程序在用户以管理员模式ComVisible(true)
运行之前无法工作。devenv.exe /setup
在 VS2010CodeGeneratorRegistrationAttribute
中,任何 SDK DLL 中都不存在,并且只是将 CodeGeneratorRegistrationAttribute.cs 的源代码添加到项目中(就像单文件生成器示例一样)似乎不起作用(我不明白为什么示例似乎希望它能够工作;毕竟.NET 不使用结构类型,那么这个属性怎么可能有任何影响?)
如果 VSIX 不能直接添加注册表设置,我认为一个合理的替代方法是包含一些在 VS 启动时自动运行的代码。该代码可以找出正在运行的 VS 版本的注册表配置单元的路径,并在那时添加必要的注册表设置。所以我有三个问题:
- 如何在 VS 启动时使我在扩展中编写的方法运行?
- 如何获取当前 VS 注册表配置单元的路径?
- 有没有其他方法可以添加注册表信息?