我有一个包含多个项目的解决方案,这些项目已检查Register for COM Interop
。
我有一个引用生成的 TLB 的 Visual Basic 6 项目。 VB6 的一个问题是当它引用 dll/tlb 时,它会对该文件加锁。
使用 Visual Studio 2010,除非我正在重建或对这些互操作项目之一进行更改,否则我可以构建/运行该解决方案(打开 VB6 项目),而不会出现一个或多个程序集已锁定。
但是,使用 Visual Studio 2012,即使在没有任何更改的简单构建上,显然它总是会出现重新高潮,这使我无法调试我的 VB6 项目。
Visual Studio 在构建时运行 regasm 的这个新功能是我可以关闭的吗?
编辑:请允许我简化一下:
- 使用 Visual Studio 2010,点击
Build-->Build Solution
并检查标记为Register for COM Interop
的程序集之一的输出和文件没有改变。 - 使用 Visual Studio 2012,我执行
构建-->构建解决方案
并检查相同的程序集,它已更新,并且每次点击构建解决方案
时都会执行此操作.
我希望 Visual Studio 2012 中的行为与 2010 中的行为相同。
编辑(再次): 我将此发布到 Microsoft Connect 。如果有人在那里回答或发布解决方法,我会敦促他们也在这里发布答案。
最佳答案
我在运行VB6和VS20XX时总是遇到这样的问题,但我总是进行重建。我的建议是停止使用 VB6 进行测试。我发现简单地创建一个测试项目并在 .NET 中对我的 .NET 代码进行所有测试要容易得多。这应该只需要少量的设置,但在我看来这是非常值得的。
我知道这不是您具体问题的答案,但它提供了另一种选择。就您所描述的问题而言,我无法重复行为的改变。我首先只打开 VS201X,重建完整的解决方案,打开 VB6 并添加对公开的 COM DLL 的引用。我没有注意到任何意外。
- 只要我没有更改 COM DLL 中的任何内容,构建就可以正常工作
- 如果我在文件被锁定时更改 COM DLL 的代码,则构建会失败
- 由于文件被锁定,重建失败
关于vb6 - 注册 COM Interop 始终在 Visual Studio 2012 中运行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12822769/