Создание подключаемых модулей Ocean 2011 с помощью бета-версии Visual Studio 11 — проблема с InventorNet.dll

Я начал тестировать бета-версию VS11 для создания плагинов Ocean 2011. Кажется, он работает очень хорошо и имеет достаточно преимуществ, поэтому я рассматриваю возможность использования его для повседневной работы. (Конечно, мы не будем производить производственные сборки с VS11 до тех пор, пока Schlumberger не порекомендует его.)

Однако есть одна проблема с блокировкой:

Не удается построить проекты, зависящие от InventorNet.dll, со следующими сообщениями:

C:\Windows\Microsoft.NET\Framework\v4.0.30319\Microsoft.Common.targets(1546,5): предупреждение MSB3270: имело место несоответствие между архитектурой процессора строящегося проекта "MSIL" и Архитектура процессора эталона "InventorNet", "AMD64". Это несоответствие может вызвать сбои во время выполнения. Рассмотрите возможность изменения целевой архитектуры процессора вашего проекта с помощью диспетчера конфигураций, чтобы согласовать архитектуры процессоров между вашим проектом и эталонами, или установите зависимость от ссылок с архитектурой процессора, которая соответствует целевой архитектуре процессора вашего проекта.

CSC: фатальная ошибка CS0008: непредвиденная ошибка чтения метаданных из файла «c:\Program Files\Schlumberger\Petrel 2011\InventorNet.dll» — «Индекс не найден».*

Я думаю, что первое предупреждение безвредно, так как подобные предупреждения выдаются из других зависимостей, но я не могу пройти мимо сообщения об ошибке (выделено жирным шрифтом). Оба, вероятно, происходят из-за более строгой проверки сборки в .NET 4.5 (также в бета-версии), используемой MSBuild. Наши проекты ориентированы на .NET 3.5.

Кто-нибудь знает, можно ли исправить ошибку какой-то настройкой или другой хитростью, или нужны обновленные сборки от Шлюмберже? (Поиск в Google дает несколько похожих случаев, связанных с VS2010, и показывает, что поставщику сборки действительно необходимо пересобрать сборку, чтобы исправить проблему.)

В качестве альтернативы, может ли кто-нибудь указать, будет ли проблема устранена в Ocean 2012?


person Robert Schmidt    schedule 07.03.2012    source источник
comment
Вы пытались ориентироваться на x64 со своими сборками?   -  person Eric    schedule 07.03.2012


Ответы (3)


Я просто проверяю ваш случай для версии моментального снимка petre/ocean 2012 D9 с OIV 9.0.0.0 (для 2011 года это 8.1.2.2), кажется, что он работает нормально (прошел сборку с некоторыми предупреждениями в Visual Studio 2011 и работает нормально в Буревестнике 2012 D9)。

Дэн Фэн

person Deng Feng Wu    schedule 12.03.2012

Просто о предупреждениях для Ocean 2012 в VS11beta: это может быть предупреждение «Несоответствие ЦП», если ваше решение имеет цель «Любой ЦП» и основано на Petrel 64 (поскольку библиотеки DLL Inventor зависят от ЦП). И не будет никаких предупреждений, если вы выберете 64-битный процессор для своего проекта. Алекс

person Alex    schedule 12.03.2012

Первое предупреждение можно устранить, добавив в файл .csproj следующую строку:

<PlatformTarget Condition=" '$(PlatformTarget)' == '' ">x86</PlatformTarget>

Я добавил его внутри узла, после узла

person demp    schedule 06.06.2012