2012-10-10 25 views
3

我有一个解决方案,其中包含Register for COM Interop已检查的多个项目。注册COM Interop始终在Visual Studio 2012中运行

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

使用Visual Studio 2010,除非我正在进行重建或对这些互操作项目中的一个进行了更改,否则我可以构建/运行解决方案(在打开VB6项目的情况下),而不用吠叫一个或多个组件被锁定。

但是,即使在没有任何变化的简单构建中使用Visual Studio 2012,显然它总是会发生regasm,这使我无法调试我的VB6项目。

这是新的功能运行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。如果有人在那里回答或发布解决方法,我会敦促他们在此发布答案。

+0

我觉得这很令人惊讶,因为VB6总是保持对文件的锁定。我不能重新编译我的VS2010项目,如果我有一个VB6应用程序打开引用2010年项目 –

+0

@MattWilko:正如我所说,在VS2010中,我不能让VB6打开,如果我**重建**,但如果它只是**建立**,它的作品。 –

+0

你有没有试过在微软的[Connect](http://connect.microsoft.com)网站上报告这个bug? –

回答

0

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

我知道这不是您的具体问题的答案,但它提供了一个替代方案。就你所描述的问题而言,我不能重复行为上的改变。我只用VS201X打开,完整的解决方案重建,打开VB6并添加对公开的COM DLL的引用。我没有注意到任何意外。

  1. 构建工作得很好,只要我没有在COM DLL
  2. 建造改变什么,如果我改变了COM DLL的代码,该文件被锁定
  3. 重建失败的文件被锁定
  4. 失败
+0

感谢您的建议。不幸的是,不使用VB6进行调试不是问题,因为C#代码和VB6代码之间存在相互依赖关系 - 不一定是循环引用,而是更偏向于椭圆。我更新了我的问题(希望),以澄清根本问题是什么。 –