3

我有一个已经Register for COM Interop检查过的几个项目的解决方案。

我有一个引用生成的 TLB 的 Visual Basic 6 项目。VB6 的一个问题是当它引用 dll/tlb 时,它会锁定该文件。

使用 Visual Studio 2010,除非我正在重新构建或对这些互操作项目之一进行更改,否则我可以构建/运行解决方案(打开 VB6 项目),而不会发现一个或多个程序集被锁定.

然而,使用 Visual Studio 2012,即使是在没有任何改变的简单构建上,显然它总是会进行 regasm,这使我无法调试我的 VB6 项目。

Visual Studio 的这个在构建时运行 regasm 的新功能是否可以关闭?

编辑:请允许我简化:

  • 使用 Visual Studio 2010,我点击Build-->Build Solution并检查了我的一个程序集的输出,该程序集标记为Register for COM Interop并且文件没有更改。
  • 使用 Visual Studio 2012,我Build-->Build Solution检查了同一个程序集,它已经更新,并且每次我点击Build Solution.

我希望 Visual Studio 2012 中的行为与 2010 年一样。

编辑(再次): 我将此发布到Microsoft Connect。如果有人在那里回答或发布解决方法,我会敦促他们也在这里发布答案。

4

1 回答 1

0

我在运行 VB6 和 VS20XX 时总是遇到这样的问题,但我总是进行重建。我的建议是停止使用 VB6 进行测试。我发现简单地创建一个测试项目并在 .NET 中对我的 .NET 代码进行所有测试要容易得多。这应该只需要少量的设置,但在我看来这是非常值得的。

我知道这不是您特定问题的答案,但它提供了替代方案。就您所描述的问题而言,我无法复制行为的变化。我一开始只打开 VS201X,重新构建完整的解决方案,打开 VB6 并添加对公开 COM DLL 的引用。我没有注意到任何意外。

  1. 只要我没有更改 COM DLL 中的任何内容,构建就可以正常工作
  2. 如果我在文件被锁定时更改了 COM DLL 的代码,则构建失败
  3. 由于文件被锁定,重建失败
于 2012-10-12T13:25:26.780 回答