- конфигурация 1: создание надстроек ESRI для ArcMap 10.4 с использованием Visual Studio 2015, ориентированных на платформу .NET 4.5.2
- конфигурация 2: создание надстроек ESRI для ArcMap 10.3 с использованием Visual Studio 2013, предназначенных для платформы .NET 3.5.
- конфигурация 3: создание надстроек ESRI для ArcMap 10.4 с использованием Visual Studio 2013, ориентированных на платформу .NET 4.5.2
Я пытаюсь понять, почему принудительное применение Option Strict On в проектах VB.NET не вызывает ошибку BC30512 в двух проектах, а в другом — в другом. Вот пример строки кода, которая вызывает ошибку при использовании конфигурации 1, но не вызывает ошибку при использовании конфигурации 2 или 3.
Dim bufferedPolygon As ESRI.ArcGIS.Geometry.IGeometry = New ESRI.ArcGIS.Geometry.Polygon
Кроме того, если я создам экземпляр управляемого класса вместо составного класса, ошибка не будет вызвана ни в одной из конфигураций (см. следующую строку):
Dim bufferedPolygon As ESRI.ArcGIS.Geometry.IGeometry = New ESRI.ArcGIS.Geometry.PolygonClass
Различные версии ArcMap определяют, какая версия платформы является целевой. В качестве дополнительной информации можно привести преобразование типов COM в .NET документации ArcObjects: Использование ArcObjects (на основе COM) в .NET (ArcObjects .NET 10.4 SDK)
Почему ошибка возникает в конфигурации 1, а не в конфигурации 2 или 3? И почему ошибка не возникает в конфигурации 1 при создании экземпляра с управляемым классом вместо сокласса?
Ссылка на проблему, отправленную в репозиторий dotnet/roslyn github. https://github.com/dotnet/roslyn/issues/13314
Спасибо, Ши.