Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/visual-studio-2012/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Vb6 始终在Visual Studio 2012中运行COM互操作注册_Vb6_Visual Studio 2012_Com Interop - Fatal编程技术网

Vb6 始终在Visual Studio 2012中运行COM互操作注册

Vb6 始终在Visual Studio 2012中运行COM互操作注册,vb6,visual-studio-2012,com-interop,Vb6,Visual Studio 2012,Com Interop,我有一个解决方案,其中几个项目已选中注册COM互操作 我有一个VisualBasic6项目,它引用了生成的TLB。VB6的一个问题是,当它引用dll/tlb时,会锁定该文件 使用Visual Studio 2010,除非我正在进行重建或对其中一个互操作项目进行了更改,否则我可以生成/运行解决方案(在VB6项目打开的情况下),而不会发出一个或多个程序集被锁定的声音 然而,使用VisualStudio2012,即使在一个简单的构建中没有任何更改,显然它总是执行regasm,这使得我无法调试VB6项目

我有一个解决方案,其中几个项目已选中
注册COM互操作

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

使用Visual Studio 2010,除非我正在进行重建或对其中一个互操作项目进行了更改,否则我可以生成/运行解决方案(在VB6项目打开的情况下),而不会发出一个或多个程序集被锁定的声音

然而,使用VisualStudio2012,即使在一个简单的构建中没有任何更改,显然它总是执行regasm,这使得我无法调试VB6项目

Visual Studio在构建时运行regasm的这一新功能是我可以关闭的吗

编辑:请允许我简化:

  • 使用Visual Studio 2010,我点击
    Build-->Build Solution
    ,检查标记为
    Register for COM Interop
    且文件未更改的程序集之一的输出
  • 使用Visual Studio 2012,我会执行
    生成-->生成解决方案
    并检查同一程序集,该程序集已更新,并且每次单击
    生成解决方案
    时都会进行更新
我希望VisualStudio2012中的行为与2010年一样有效

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

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

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

  • 只要我没有更改COM DLL中的任何内容,构建就可以正常工作
  • 如果在锁定文件时更改了COM DLL的代码,则生成失败
  • 由于文件被锁定,重建失败

  • 我觉得这很奇怪,因为VB6总是对文件保持锁定。如果打开了引用2010版本的VB6应用程序,则无法重新编译VS2010项目project@MattWilko:正如我所说,在VS2010中,如果我正在重建,我无法保持VB6的打开状态,但如果只是构建,它就可以工作。您是否尝试过在Microsoft的网站上将此作为错误报告给Microsoft?@HolisticDeveloper:谢谢。我想这就是我要做的。也许你可以做一个单独的构建目标(比如调试),其中互操作程序集不是构建的?谢谢你的建议。不幸的是,不使用VB6进行调试并不是一个问题,因为C#代码和VB6代码之间存在相互依赖关系——不一定是循环引用,但更像是省略引用。我更新了我的问题(希望)以澄清根本问题/问题是什么。