Почему мой плагин, собранный с Ocean/Petrel 2010.2.2, не работает с 2010.2?
Мы создали плагин с последним исправлением Ocean/Petrel: 2010.2.2. Все наши тесты работают нормально. Но плагин аварийно завершает работу при использовании с 2010.2.
Любой совет от кого-либо?
2 ответа
Выпуски океанов / буревестников классифицируются следующим образом:
- Основные выпуски: 2009.1, 2010.1, 2011.1
- Незначительные выпуски или исправления: 2009.2, 2010.2, 2011.2
- Исправления: 2010.2.1, 2010.2.2
Основные выпуски не совместимы в двоичном формате: плагин, скомпилированный в соответствии с 2009.1, необходимо перекомпилировать для работы с 2010.1. При 2-летней стабильности API это должна быть просто перекомпиляция. Возможно, у вас есть предупреждения об устаревших API, которые будут устаревшими в следующем выпуске, но это должно быть быстрой задачей.
Небольшие выпуски обычно обратно совместимы с двоичными файлами: Petrel 2010.2 сможет запускать плагин, скомпилированный с 2010.1. Однако прямая двоичная совместимость не обеспечивается: Petrel 2010.1 не будет запускать плагин, скомпилированный с 2010.2.
Обратите внимание, что второстепенные выпуски могут также представить немного, но новые API.
Оперативные исправления всегда поддерживают обратную двоичную совместимость: Petrel 2010.2 может запускать подключаемые модули, скомпилированные с 2010.1, 2010.2, 2010.2.1. Однако прямая двоичная совместимость в настоящее время не обеспечивается: Petrel 2010.2 не будет запускать плагины, скомпилированные с 2010.2.1 или 2010.2.2.
Исправления никогда не вводят новые API.
Итак, правила таковы:
- Всегда компилируйте ваш плагин с последней основной версией (в вашем случае 2010.1),
- Скомпилируйте ваш плагин с последней версией Minor (2010.2), если вам абсолютно необходим новый API, представленный в этом патче.
- Но Никогда не компилируйте свой плагин против исправлений,
Несоблюдение этих правил заставит ваших клиентов использовать, развертывать или повторно развертывать исправление или оперативное исправление, которое вы использовали для создания своего подключаемого модуля. Это задержит (в лучшем случае) или предотвратит (в худшем случае) продажу / принятие вашего плагина вашими клиентами.
Надеюсь, поможет
С уважением
Винсент
Я также обнаружил, что это проблема. Что я делаю, так это сохраняю копии общих папок для каждой версии Petrel и связываю ссылки с папкой / версией, с которой я хочу скомпилировать, вместо того, чтобы всегда ссылаться на установленную версию Petrel. Вы можете легко переключаться с помощью файла.targets. Затем я следую тому, что сказал Винсент, и проверяю ссылки на соответствующие библиотеки для сборки.
Таким образом, даже если у меня есть Petrel 2010.2, я ссылаюсь на библиотеки 2010.1 во время сборки.
Грант