Невозможно экспортировать 32-разрядный компонент обслуживания из каталога COM +, используя 64-разрядную версию Windows 7 или Windows Server 2008 - PullRequest
1 голос
/ 18 декабря 2009

Использование Windows 2003 Server или 2000, создание прокси приложения COM + для использования в другой системе, включает компоненты .NET Enterprise Services в пакете MSI, созданном во время экспорта. Компоненты .NET также зарегистрированы в GAC, и regsvcs запускается автоматически во время установки прокси приложения.

Однако мы обнаружили, что Windows Server 2008 не включает сборку. Он будет включать .tlb, но не .dll, ни устанавливать его в GAC, и, конечно, все взрывается, когда приложение не может найти сборку.

Кто-нибудь знает, что нужно сделать, чтобы поведение работало так же, как в 2000-2003 годах?

ОБНОВЛЕНИЕ Мы можем сгенерировать прокси, используя только сборку .NET, и она отлично работает, но если мы попытаемся добавить другие сборки или устаревшие библиотеки VB6 COM + в тот же пакет, в котором говорится, что они созданы другой процессор.

ОБНОВЛЕНИЕ Я понимаю, что если вы соберете режим Любой ЦП (для которого настроены все проекты), то при регистрации путем перетаскивания сборок в приложение Службы компонентов он будет использовать 64-разрядную версию, если существующее 64-битное приложение. Однако это 32-битное приложение. В приложении COM + зарегистрированы dll VB6, которые являются 32-битными. Так что это должно использовать 32-битный реестр и т. Д., И сделать приложение 32-битным. Поэтому, когда после .NET любая сборка ЦП добавляется, она должна быть 32-разрядной ... однако при экспорте приложения сборка .NET не добавляется в создаваемый MSI-файл.

ОБНОВЛЕНИЕ Мы нашли http://support.microsoft.com/kb/924729, в котором обсуждается ошибка, из-за которой 32-разрядные компоненты обслуживания не могут быть экспортированы ... есть исправление, но оно есть для Windows Server 2003. Мы сузили проблема устранена, и только 32-разрядные обслуживаемые компоненты не экспортируются должным образом.

Ответы [ 3 ]

3 голосов
/ 10 ноября 2010

.NET библиотеки, скомпилированные с любым процессором, получат битность, когда они скомпилированы в формате jit. COM + имеет только чувство жесткой битности. х86 или х64, но не нейтральный. По этой причине вам нужно использовать один из двух, а не любой процессор.

Earl

2 голосов
/ 07 февраля 2012

MS имеет исправление для этой проблемы для 2008r2. Мы смогли заставить их подтвердить это как ошибку и выпустить исправление в прошлом году. Попробуйте связаться с ними, чтобы получить HF.

1 голос
/ 28 января 2010

Я связался с технической поддержкой Microsoft по этому поводу. Проблема заключается в том, что вы не можете экспортировать ЛЮБОЙ 32-битный ServicedComponent из приложений COM + в 64-битной Windows 2008 должным образом из-за изменений реестра и каталога. Это также было проблемой в Windows Server 2003, но она была исправлена ​​исправлением и была помечена как исправленная в 64-разрядной версии Windows Server 2008, но фактически НЕ была исправлена ​​в 2008 году. Это также ошибка в Windows 7.

Все разработчики Windows 7, которым небезразлична эта проблема, должны связаться со службой технической поддержки Microsoft, чтобы сообщить, что они сталкиваются с этой проблемой, поскольку Microsoft не намерена исправлять ее без обоснования затрат со стороны клиента. Мы пытаемся заставить MS принять наше экономическое обоснование в качестве оправдания. Я буду обновлять этот пост в будущем, если что-то изменится.

...