将项目升级到Visual Studio 2015会导致枚举错误

时间:2016-01-11 14:22:30

标签: vb.net enums visual-studio-2015

我有一个针对框架3.5的VB.NET项目,它引用了从数据库生成的编译枚举的动态DLL。我的项目在Visual Studio 2012中编译和运行。我开始将我的解决方案升级到Visual Studio 2015,并在我尝试执行此项目时遇到了一堆错误。

我得到的关于每个枚举的两个错误是

  • 未为类型MyEnumType和MyEnumType
  • 定义Operator'='
  • 字段MyEnumType.Field具有无效的常量值

查看枚举元数据的定义(我可以在2015年但不能在2012年完成)我看到它被定义为

    Enum EnumName as Object
      Field1
      Field2
    End Enum

正如你可以看到它附加的As Object,这是我以前从未见过的。但这解释了operator = error,因为如果它是一个对象而不是你必须定义一个重载的Equals运算符。

我只是看到2015年是否有人有任何见解或知道会导致此问题的任何事情。我尝试创建一个新项目,导入.DLL只是为了看看它们是否在VS 2015中完全有效。它们在C#中引用但在VB.NET中没有引用。 .DLL是用VB.NET编写和编译的。小号

暂时我仍然可以使用2012,但是希望将来升级到2015,而不必重写一堆东西。

编辑:

以下是用于创建枚举.DLL的(简化)代码。正在使用Enum名称读取xml,并使用sql查询生成枚举。

Dim myEnumBuilder As Emit.EnumBuilder
Dim myAppDomain as AppDomain
Dim myModuleBuilder As ModuleBuilder

Dim myAssemblyName As New AssemblyName()
myAssemblyName.Name = EnumDll.Name

' Create a dynamic assembly.
myAssemblyBuilder = myAppDomain.DefineDynamicAssembly(myAssemblyName, AssemblyBuilderAccess.Save, msOutputDirectoryPath)

' Create a dynamic module.
myModuleBuilder = myAssemblyBuilder.DefineDynamicModule("Library." & EnumDll.Name, EnumDll.Name & ".dll")
 ' Creating a dynamic Enum.
myEnumBuilder = myModuleBuilder.DefineEnum(EnumDll.Name & "." & EnumName, TypeAttributes.Public, GetType(Int32))

 Dim myFieldBuilder As FieldBuilder = myEnumBuilder.DefineLiteral(StrEnum, CInt(oReader(0)))
 myEnumBuilder.CreateType()
 myAssemblyBuilder.Save(EnumDll.Name & ".dll") 'save the dll

0 个答案:

没有答案