一些客户(在升级VS 2005 Package到VS 2008时)遇到了问题,而我写这篇帖子就是要解决这些问题。这里要感谢我们的Engineering Lead Deepankar调查了这个问题。
如果你使用VS 2005开发VS Package工程,那么你不能够在不重新编译工程的情况下直接迁移package工程到Visual Studio 2008(译注:一些基础的迁移可以参考另一篇文章:Upgrading VS 2005 Packages to VS 2008: A Basic Guide),原因是ProjectAggregator2有了一些变更——ProjectAggregator2将不再做为单独的安装包分发,而是集成到VS平台里的Microsoft.VisualStudio.Shell.9.0.dll程序集里,就是说不是随VS 2008 SDK一起发布的。
如果你打开Microsoft.VisualStudio.Shell.Flavor命名空间,你会看到如下列出的接口:
· IvsProjectaggregator2
· IVsAggregatableProjectCorrected
· IVsAggregatableProjectFactoryCorrected.
他们就是ProjectAggregator2集成到Shell DLL的对应,所以你需要添加工程引用,并更新ProjectBase目录下的FlavoredProjectFactoryBase.cs文件。
要想让vs 2005 package工程可以在Visual Studio 2008下工作,你需要做下面的事情:
· 通过使用VS 2008和.NET 3.5加载工程升级Package工程到VS 2008
· 删除对Microsoft.VisualStudio.Shell的引用
· 添加对Microsoft.VisualStudio.Shell.9.0和Microsoft.VisualStudio.Shell.Interop.9.0的引用
· 移除Project Base代码下的FlavoredProjectFactoryBase.cs文件
· 重新编译