在Visual Studio 2015中,如果我创建一个"类库"C#项目,然后添加对自定义COM DLL(使用VB6创建)的引用,VS将自动添加所有(?)VB6 DLL依赖的COM引用.
它是如何做到的?它如何静态地弄清楚那些引用是什么?
注意 - 我们的VB6 DLL使用"早期绑定",但即使仍然没有像传统的"C"样式DLL中那样的COM项目的导入表.
msstdfmt.dll我认为该文件随Visual Basic 6提供,有时是部署的依赖项.
我的电脑上的副本包括帮助字符串
Microsoft数据格式对象库6.0(SP6)
这不是很有用.
这个DLL是什么用的?它提供的关键功能是什么?
我团队中的几位开发人员遇到了这个问题 我们可以在IDE中运行我们的应用程序,但是当我们最终退出应用程序时,IDE本身将崩溃.
崩溃采取的形式
"Visual Basic已停止工作"
如果我们很好地退出我们的应用程序或在调试器中强制停止它并不重要; 相同的结果(崩溃的IDE).
该应用程序的退出顺序是:
用户从菜单中选择"退出"
菜单事件处理程序调用 Unload Me
Form_QueryUnload 事件处理程序触发
Form_Unload事件处理程序触发.它确实:
'close all sub forms
For i = Forms.Count - 1 To 1 Step -1
Unload Forms(i)
Next
Run Code Online (Sandbox Code Playgroud)
然后保存一些数据,然后Exit Sub.
我们倾向于运行一个包含5-6个项目的组文件.
这个错误有时似乎会消失,有时会发生,似乎是随机的.我不知道是什么因素影响了这一点.
如果我们实际上没有运行应用程序,只有IDE,那么它工作正常,我们可以通常IDE本身.
有人见过这个吗?有任何想法吗?谢谢!
我有下面的结构,正在为 COM 互操作进行编译。我收到以下构建警告:
warning :类型库导出器警告处理“MyNamespace.MyStruct.k__BackingField,MyAssemblyName”。警告:公共结构包含一个或多个将被导出的非公共字段。
但我不明白它指的是什么——根本没有非公共字段或字段。也许编译器正在生成一些我看不到的东西?这个警告是什么意思?如果我能做些什么来清理它怎么办?
这是正在构建的(稍微清理过的)代码:
[Guid("....")]
[ComVisible(true)]
public struct MyStruct
{
public string StringA { get; set; }
public string StringB { get; set; }
public MyStruct(string a, string b)
{
StringA = a;
StringB = b;
}
public MyStruct(MyStruct other)
{
StringA = other.StringA;
StringB = other.StringB;
}
public override bool Equals(object obj)
{
if (!(obj is MyStruct)) return false;
var other = (MyStruct)obj;
return
other.StringA == this.StringA &&
other.StringB == this.StringB;
} …Run Code Online (Sandbox Code Playgroud) 此代码已从 VB6 转换为 VB.Net:
Public prvMainForm = VB6Form
If prvMainForm IsNot Nothing Then
CObj(prvMainForm).StatusBar.Panels(1) = "Initializing Folders..."
End If
Run Code Online (Sandbox Code Playgroud)
(我的代码很长,所以我刚刚添加了这个if块,它是实际发生错误的地方。)
在 If 语句中的单行上可以看到错误:
属性“项目”是“只读”
我是 vb6 的新手,当尝试返回变量时,我的函数中出现编译器错误。
\n\n\n“语句结束预期错误vb6”
\n
我的功能如下:
\nPublic Function StringFormat(ByVal MyStr As String) As String\n \n Dim i As Integer\n Dim sBadChar As String\n Dim NewString As String\n \n ' List all illegal/unwanted characters\n sBadChar = "/<>?\\{}[]()=,!#*:'*\xc2\xac-"\n\n ' Loop through all the characters of the string\n For i = 1 To Len(MyStr)\n If InStr(sBadChar, Mid(MyStr, i, 1)) Then\n Mid(MyStr, i, 1) = ""\n End If\n Next i\n \n Return MyStr\n \nEnd Function\nRun Code Online (Sandbox Code Playgroud)\n我收到错误return,关于为什么会发生这种情况有什么想法吗?\n提前谢谢您