powered by simpleCommunicator - 2.0.51     © 2025 Programmizd 02
Форумы / WinForms, .Net Framework [игнор отключен] [закрыт для гостей] / Как указать необходимую версию Microsoft.Office.Interop.Excel ?
25 сообщений из 29, страница 1 из 2
Как указать необходимую версию Microsoft.Office.Interop.Excel ?
    #39563464
Colt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Ситуация:
На машине, где компилируется проект стоят:
- C# express 2008
- MS Office 2003
- MS Office 2007
На машинах пользователей может стоять только MS Office 2003 под WinXP.
В программе используется работа с Excel через Interop. Отсюда желание, чтобы программа использовала Interop именно под версию MS Office 2003.

Проблема:
Даже при указании подключения ссылки на Excel версии 2003, при запуске у пользователей программа ругается на невозможность загрузки Excel версии 2007.

Обратил внимание, что свойство ссылки выглядит несколько странно (см. рисунок): данные, помеченные зеленым, относятся к версии 2003, а помеченные красным к 2007.

Вопрос:
Как можно (если можно) указать, что необходимо использовать именно 2003 версию?
...
Рейтинг: 0 / 0
Как указать необходимую версию Microsoft.Office.Interop.Excel ?
    #39563547
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Colt,
Может наоборот?
Пусть ищет сама наиболее подходящую версию?
...
Рейтинг: 0 / 0
Как указать необходимую версию Microsoft.Office.Interop.Excel ?
    #39563649
Colt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Petro123,
Так я разве же против? Вся засада в том (как я предполагаю), что на этапе компиляции принимается решение что самая подходящая версия 2007 и потом, уже у пользователя, прога требует именно 2007, а на имеющуюся в наличии 2003 версию слюной плюет.
Вот мне и хочется знать, как еще при компиляции объяснить, что не надо зацикливаться на версии 2007.
...
Рейтинг: 0 / 0
Как указать необходимую версию Microsoft.Office.Interop.Excel ?
    #39563665
Фотография buser
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Colt, спесифик версион = труе
...
Рейтинг: 0 / 0
Как указать необходимую версию Microsoft.Office.Interop.Excel ?
    #39563673
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
buserColt, спесифик версион = труе
Как понимаю, тогда ищется именно та что при разработке?
А у него почему максимальная не работает?
...
Рейтинг: 0 / 0
Как указать необходимую версию Microsoft.Office.Interop.Excel ?
    #39563676
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Colt,
OFF зачем тебе два офиса на машине для продакшена компиляции?
...
Рейтинг: 0 / 0
Как указать необходимую версию Microsoft.Office.Interop.Excel ?
    #39563687
Siemargl
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Colt,

Лучше ручками писать загрузку.

Я на stackoverflow находил пример.

Заодно решается проблема выбора версии - какой Ексель есть, такой и запустится.


В принципе, у себя на дев.машине снеси новый Эксель и поставь старый. Так привяжется жестко к 2003 версии.
Только с другими работать не будет.
...
Рейтинг: 0 / 0
Как указать необходимую версию Microsoft.Office.Interop.Excel ?
    #39563691
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
SiemarglТолько с другими работать не будет
Не верю. В интерфейсах должно быть так же как с Net.
...
Рейтинг: 0 / 0
Как указать необходимую версию Microsoft.Office.Interop.Excel ?
    #39563718
Colt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
buser, не совсем понял, что именно вы имели ввиду? Где именно этот самый "специфик", который можно выставить в "тру"?
...
Рейтинг: 0 / 0
Как указать необходимую версию Microsoft.Office.Interop.Excel ?
    #39563722
Colt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Siemargl, вы имеете в виду позднее связывание? Если да, то действительно, это может решить проблему с жесткой прошивкой версии. Правда добавляется куча других проблем, присущих позднему связыванию, которых хотелось бы избежать.
...
Рейтинг: 0 / 0
Как указать необходимую версию Microsoft.Office.Interop.Excel ?
    #39563728
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Coltчто на этапе компиляции принимается решение что самая подходящая версия 2007
На машине компиляции должна быть нижняя версия.
Как в net supported Runtime.
Тогда у клиента прицепит наиболее старшую.
Проверьте.
...
Рейтинг: 0 / 0
Как указать необходимую версию Microsoft.Office.Interop.Excel ?
    #39563740
Colt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Petro123Colt,
OFF зачем тебе два офиса на машине для продакшена компиляции?

Увы и ах, я работаю не в софтостроительной компании. Скорее это из раздела "а еще я немного программирую". Потому, с некоторых пор, office 2003 уже совсем перестал удовлетворять потребности, пришлось перейти на 2007.

Раз уж пошла такая беседа дам немного своей истории.
Когда у меня стоял только 2003, то прога запускалась без проблем на всех окружающих компах, даже включая те, на которых стоял 2007 (т.е. совместимость в эту сторону Interopt поддерживал).
Когда меня обуяла гордыня и я снес 2003 поставив вместо него 2007, то (после перекомпиляции) прога стала ругаться на отсутствие библиотек от 2007 на машинах, где стоит только 2003. В качестве костыля я пока рядом с экзешником положил Microsoft.Office.Interop.Excel.dll, Microsoft.Vbe.Interop.dll и office.dll от 2007. Машины перестали ругаться и даже стали нормально (пока) работать. Но это сильно костыль, который мне не нравиться и вообще удивительно, что сработало.
На текущий момент я пытаюсь понять как (если это возможно) имея на машине, где все компилиться, две версии офиса убедить c# пользоваться той, что помладше. (Это еще одна причина, почему у меня пока стоит два офиса).

Но у меня такое ощущение, что нормального решения моей проблемы нет и единственный более-менее приемлемый выход - завести отдельную машину под компиляцию, где будет стоять только офис 2003 (а может и вовсе 2000), как и предлагали товарищи выше.
...
Рейтинг: 0 / 0
Как указать необходимую версию Microsoft.Office.Interop.Excel ?
    #39563746
Colt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Petro123Coltчто на этапе компиляции принимается решение что самая подходящая версия 2007
На машине компиляции должна быть нижняя версия.
Как в net supported Runtime.
Тогда у клиента прицепит наиболее старшую.
Проверьте.

И я тоже так думал. Но, видимо, цепляние библиотек и цепляние СОМ-объектов (сорри, если коряво выразился) имеет между собой некоторые различия.

Обратите внимание на рисунок из первого поста: там, при цеплянии, я указываю как раз младшую версию, причем явно, но уже в свойствах ссылки видно, что по факту цепляется dll от старшей версии.
...
Рейтинг: 0 / 0
Как указать необходимую версию Microsoft.Office.Interop.Excel ?
    #39563784
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ColtОбратите внимание на рисунок из первого поста: там, при цеплянии, я указываю как раз младшую версию, причем явно, но уже в свойствах ссылки видно, что по факту цепляется dll от старшей версии.
Т.е. механизм com тот же. Просто проверьте что я писал выше.
Есть целевая среда, а есть среда компиляции.
Вы же не проверили.
...
Рейтинг: 0 / 0
Как указать необходимую версию Microsoft.Office.Interop.Excel ?
    #39563906
Сон Веры Павловны
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
...
Рейтинг: 0 / 0
Как указать необходимую версию Microsoft.Office.Interop.Excel ?
    #39564091
Siemargl
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Petro123SiemarglТолько с другими работать не будет
Не верю. В интерфейсах должно быть так же как с Net.
В теории да. Но так получалось
На дев-виртуалке у меня совсем никакого Excel-я нет.

Так что грузилось ручками assembly.load, а с подменой что то не срабатывало.

Уже подробности на память не воспроизведу - надо подымать версии.
...
Рейтинг: 0 / 0
Как указать необходимую версию Microsoft.Office.Interop.Excel ?
    #39564115
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
SiemarglУже подробности на память не воспроизведу - надо подымать версии.
Вот я поэтому и говорю автору в 15 раз проверить юзкейс.
Мы не можем в IT ручками в динамике грузить офис.
Либо MS настолько дурак.
...
Рейтинг: 0 / 0
Как указать необходимую версию Microsoft.Office.Interop.Excel ?
    #39564141
Сон Веры Павловны
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Petro123Мы не можем в IT ручками в динамике грузить офис.
Либо MS настолько дурак.
Если речь про com-interop враппер для офиса - еще как можем, т.к. это обычная дотнетовская сборка, для которых Assebly.LoadFrom никто не отменял..
И да, чтобы сборка нужной версии подцеплялась у клиента, нужно, чтобы она у него была. Поскольку в случае ТС при компиляции сборка враппера берется из ГАКа, и локально не копируется, то, если у клиента никогда не ночевало 2003-го офиса (вот как у меня сейчас, например) - откуда этой сборке взяться? Соответственно, поставить Copy Local=True, Embed Interop Types=False, и распространять сборку враппера нужной версии вместе с приложением. Ну, и про перенаправление версий, упомянутое выше, не забывать.
...
Рейтинг: 0 / 0
Как указать необходимую версию Microsoft.Office.Interop.Excel ?
    #39564164
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Сон Веры Павловны,
Очень давно при работе с COM было так:
Itemp = CreateCOMObject ("ADO");
Соответственно из реестра брался последний по версии объект.
В данном сабже не так?
Тогда нафига эта технология interopxxxxx?
Я фигею.
Это ведь дико неудобно?
Откудя я знаю версию офиса у заказчика? Ен
...
Рейтинг: 0 / 0
Как указать необходимую версию Microsoft.Office.Interop.Excel ?
    #39564171
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Сон Веры Павловныесли у клиента никогда не ночевало 2003-го офиса (вот как у меня сейчас, например) - откуда этой сборке взяться?
При поиске Net ведь работает?
Есть вариант - загрузить максимальную.
...
Рейтинг: 0 / 0
Как указать необходимую версию Microsoft.Office.Interop.Excel ?
    #39564210
Сон Веры Павловны
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Petro123При поиске Net ведь работает?
Есть вариант - загрузить максимальную.
Что работает? Поиск сборки, которой никогда не было на компьютере? И что-то находится? И есть уверенность, что это именно та самая версия?
...
Рейтинг: 0 / 0
Как указать необходимую версию Microsoft.Office.Interop.Excel ?
    #39564225
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Сон Веры ПавловныPetro123При поиске Net ведь работает?
Есть вариант - загрузить максимальную.
Что работает? Поиск сборки, которой никогда не было на компьютере? И что-то находится? И есть уверенность, что это именно та самая версия?
Net проект скомпиленный у меня с net 4.5 не будет работать у зказчика с net 4.6?
...
Рейтинг: 0 / 0
Как указать необходимую версию Microsoft.Office.Interop.Excel ?
    #39564243
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Сон Веры Павловны,
Атрибут version, sku в конфиге определяют общие версии Net напр. От 4 до 4.7.
Логично предположить для офиса нечто подобное.
...
Рейтинг: 0 / 0
Как указать необходимую версию Microsoft.Office.Interop.Excel ?
    #39564288
Сон Веры Павловны
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Petro123Логично предположить для офиса нечто подобное.
А мне - совсем нелогично: технология СОМ намного более старая, чем .Net, и давно уже не менялась. Ну, и еще я знаю, как загружаются и активируются COM-компоненты в .Net - всё по тем же CLSID, которые берутся либо из атрибутов интерфейсов PIA-сборки, либо из внедренных кусков PIA-сборки при выбранной опции Embed Interop Types=True. И в том, и в другом случае активация делается по CLSID, и никаких sku или чего-либо подобного там и в помине нет.
...
Рейтинг: 0 / 0
Как указать необходимую версию Microsoft.Office.Interop.Excel ?
    #39564352
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Сон Веры Павловны,
Давай как потребители рассуждать.
- с Net линейка версий работает? Да!
- Это удобно? Да!
Почему в офисе ВОЗМОЖНО не работает.
Ждём теста автора топика.
...
Рейтинг: 0 / 0
25 сообщений из 29, страница 1 из 2
Форумы / WinForms, .Net Framework [игнор отключен] [закрыт для гостей] / Как указать необходимую версию Microsoft.Office.Interop.Excel ?
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]