vb.net - "Option Strict On disallows implicit conversions"执行不一致

标签 vb.net visual-studio com arcobjects rcw

  • 配置 1:使用针对 .NET 4.5.2 框架的 Visual Studio 2015 为 ArcMap 10.4 构建 ESRI 加载项
  • 配置 2:使用针对 .NET 3.5 框架的 Visual Studio 2013 为 ArcMap 10.3 构建 ESRI 加载项
  • 配置 3:使用针对 .NET 4.5.2 框架的 Visual Studio 2013 为 ArcMap 10.4 构建 ESRI 加载项

我试图理解为什么 VB.NET 项目中的 Option Strict On 强制执行不会在两个项目中引发错误 BC30512 而在另一个项目中却引发错误。下面是使用配置 1 触发错误但不触发配置 2 或 3 错误的示例代码行。

Dim bufferedPolygon As ESRI.ArcGIS.Geometry.IGeometry = New ESRI.ArcGIS.Geometry.Polygon

此外,如果我实例化托管类而不是 coclass,则在任一配置中都不会触发错误(请参阅以下行):

Dim bufferedPolygon As ESRI.ArcGIS.Geometry.IGeometry = New ESRI.ArcGIS.Geometry.PolygonClass

ArcMap 的不同版本决定了目标框架的版本。对于其他背景,ArcObjects 文档的 COM 到 .NET 类型转换是相关的: Using ArcObjects (COM-based) in .NET (ArcObjects .NET 10.4 SDK)

为什么错误在配置 1 中触发,而不是在配置 2 或 3 中触发?为什么当使用托管类而不是 coclass 实例化时,配置 1 中没有触发错误?

指向在 dotnet/roslyn github 存储库中提交的问题的链接。 https://github.com/dotnet/roslyn/issues/13314

谢谢 乳木果

最佳答案

此时,看起来(正如 Hans Passant 在对原始帖子的评论中所建议的那样)这确实是 Visual Studio 2015 中 Roslyn 编译器的错误。我在 dotnet/roslyn GitHub 存储库中打开了一个问题,并且它已被标记为错误并分配给团队成员。随着问题的调查,此状态可能会发生变化。

问题和其他故障排除信息的链接是 https://github.com/dotnet/roslyn/issues/13314

关于vb.net - "Option Strict On disallows implicit conversions"执行不一致,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39047509/

相关文章:

vb.net - vb.net 4.5 中的 Zipfile "The directory name is invalid."错误 - 无法确定原因?

c++ - 更改 .cpp、.h 文件的 Visual Studio 默认路径

c++ - Visual Studio 调试器在内联代码中速度变慢

c# - 使用来自 COM 的参数化构造函数实例化类

vb.net - 实现属性必须具有匹配的 'ReadOnly' 或 'WriteOnly' 说明符

c# - 使用 C++ 中的 COM 对象,在 C#.NET 中返回对象 []

asp.net - 内联如果似乎只在第一次迭代时被调用 asp.net vb

vb.net - 尝试使用 Catch 显示输入错误消息

vb.net - Visual Studio 2013 更新 3 - 没有智能感知?

visual-studio - 在非开发机器上运行 vc2008 调试构建