【问题标题】:Accessing the VS2010 version of the Microsoft.VisualStudio.VCProjectEngine assembly in VS2012在VS2012中访问VS2010版本的Microsoft.VisualStudio.VCProjectEngine程序集
【发布时间】:2012-09-22 02:08:35
【问题描述】:

我的公司最近创建了一个 Visual Studio 2010 加载项,它允许我们从 2010、2008 和 2005 年的任何给定 Visual Studio 项目创建 LINT 文件。我们现在想让这个相同的加载项在 Visual Studio 2012 中工作,因为我们知道我们的许多客户将在不久的将来使用它,如果还没有的话。

我们认为它应该是一个简单的“切换”,并且相同的代码应该适用于两者,但是你瞧,VS10 插件在 VS12 中不起作用。因此,我将代码(绝对没有更改)复制到 VS12 插件中,令人惊讶的是,它确实有效。自然,我们不希望有相同代码的两个版本。可读性不好,可维护性不好,所以我们仍然想找到一种方法让 VS10 插件在 VS12 中工作。

我认为问题在于 Microsoft.VisualStudio.VCProjectEngine 程序集。这在 VS12 中的解释与在 VS10 中的解释不同,这意味着当 VS12 读取插件时,它并没有做我们希望它做的事情。

我已经对此问题进行了一些研究,许多人建议通过使用反射来解决问题,但我对这个概念相当陌生,并且没有足够的信心尝试它并冒着严重破坏加载项的风险.

所以我的问题是:有没有一种简单的方法可以将 Microsoft.VisualStudio.VCProjectEngine 的 VS10 版本读入 VS12?

非常感谢:)

【问题讨论】:

  • 另外,如果您知道除此程序集之外的任何原因,两个具有完全相同代码的加载项(一个用于 VS2010,一个用于 VS2012)在各自的 Visual Studio 中工作,但在另一个,这也很有用

标签: visual-studio-2010 assemblies visual-studio-2012 lint


【解决方案1】:

我后来找到了这个问题的答案,并意识到它尚未在线程上得到确认。

答案确实在于 VCProjectEngine 程序集。出于某种原因,Visual Studio 2010 中的模块与 Visual Studio 2012 中的模块(具有相同名称)不同,这意味着在 VS2012 中编写时需要该模块的任何代码在 VS2010 中都不起作用,反之亦然。

这很痛苦,因为这意味着我们有两批完全相同的代码,但事实就是这样。

【讨论】:

  • 解决重复代码问题的一种方法是添加指向源文件的链接,而不是将它们复制到第二个项目。
  • 您可以使用dynamics 去除重复的代码。但是你会丢失编译检查。
猜你喜欢
  • 1970-01-01
  • 2012-03-14
  • 2012-09-12
  • 1970-01-01
  • 2011-02-17
  • 2012-12-13
  • 1970-01-01
  • 2016-01-03
  • 2013-03-16
相关资源
最近更新 更多