3
  • 配置 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

谢谢乳木果

4

1 回答 1

1

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

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

于 2016-08-24T21:06:28.843 回答