Форум программистов, компьютерный форум, киберфорум
C# .NET
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.88/8: Рейтинг темы: голосов - 8, средняя оценка - 4.88
 Аватар для Yevgenius
0 / 0 / 0
Регистрация: 25.12.2013
Сообщений: 42
.NET 4.x

Распространение приложения и com.interop

18.08.2014, 16:45. Показов 1631. Ответов 2
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Добрый день.
Вот уже довольно долго мучаюсь над такой проблемой:
Написал приложение, на .NET подключаемое к другому приложению через com.interop
На моем компьютере, и на многих других все работает хорошо. Без падений.
Но у некоторых клиентов программа падает без какой либо информации об ошибке. Притом есть случаи, когда есть 3 компьютера клиента, с абсолютно одинаковой конфигурацией железа и ПО, на двух машинах все хорошо, на третьей падения.

Прописал в программу logger, который записывает практически каждый шаг. Надеялся таким образом поймать ошибку.
На двух разных машинах падение было в разных местах, но в этих местах нет ничего особенного в коде и ничего общего.

Пошел на крайние меры, и установил у клиента Visual Studio , чтоб устроить охоту на этот bug.
Оно конечно не красиво, но выбора не было т.к срочно..

В общем выявилось вот что:
при открытии проекта в VS, сразу есть ошибка при компиляции о том, что подключенные COM модули не содержат некоторых функций к которым программа обращается, или же эти COM модули вообще не найдены. Но они явно установлены на компьютере клиента. И полное совпадение версий ПО и всего остального.

Вписывал эти COM модули в Copy Local = true, чтоб DLL был вне зависимости от системы.
То же самое..
Если у клиента, через VS удалить references и заново добавить, то компилируется.

Внимание вопрос: Что можно с этим делом поделать?
По идее, на сколько я понимаю, если некий DLL прописан в Copy Local = true, то он должен быть в той же папке, где и EXE. Вне зависимости от того, в каком каталоге они находятся.

Помимо подключения к com.interop программы (3д дизайна), программа так-же подключается к excel через microsoft.office
С этим модулем те-же проблемы. Хотя офис установлен на компьютерах (та же версия). Copy Local так-же не помогло, а на одном из компьютеров, VS вообще не видит microsoft.office никаким образом.
Ставил отдельно пакет с сайта microsoft, ноль реакции. Нет такого модуля в системе, хоть тресни (А офис установлен).

Установщика у программы нет (пока) и должна работать после простого копирования клиенту (portable)

Уже не знаю что и думать.. Что можете подсказать?
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
18.08.2014, 16:45
Ответы с готовыми решениями:

Запуск приложения использующего Interop.Word.dll без офиса
Здравствуйте такая проблема Есть приложение которое работает с шаблонами Word составляет документики и распечатывает их. при этом...

Interop.Microsoft.Office.Interop.Excel, как исправить ошибку несовместимости версий
Error 1 Assembly 'Interop.Microsoft.Office.Interop.Excel, Version=1.7.0.0, Culture=neutral, PublicKeyToken=null' uses...

Interop.Microsoft.Office.Interop.Excel
Добрый день! Собственно есть Win10, Visual Studio 2019, есть MS Office 2007 с установленным Excel. При попытке подключиться к Excel...

2
Заблокирован
19.08.2014, 03:43
Нет такого модуля в системе, хоть тресни (А офис установлен).
Все dll надо самому копировать к exe (\bin\Debug) и ссылки в проект на них добавлять оттуда.
0
 Аватар для Yevgenius
0 / 0 / 0
Регистрация: 25.12.2013
Сообщений: 42
19.08.2014, 12:51  [ТС]
Все dll надо самому копировать к exe (\bin\Debug) и ссылки в проект на них добавлять оттуда.
В основном конечно так, но если есть DLL прописанные в системе (registry), они находятся в системных папках, или папках программы к которой они относятся. При выставлении local copy = true , они копируются в папку проекта (автоматом) и по логике вещей, visual studio при компиляции должен цеплять их оттуда.
И при наличии всех этих DLL, как в локальной папке проекта, так и в исходном месте (папке управляемой программы), на некоторых системах даже visual studio их не видит (при копировании проекта на эту систему).
Если эти подключения удалить и создать заново, то бывает что работает.. Но само собой для каждого клиента перекомпилировать проект на его компьютере - это не допустимо и так быть не должно.
На сколько я смог выяснить, после компиляции, visual studio указывает приложению первым делом искать в собственной папке те dll , к которым он должен быть подключен.

Добавлено через 2 часа 13 минут
Вот на пример сейчас проверил еще раз:
На моем компьютере, windows 7 x64, office 2007, VS 2013
На нем все работает хорошо. На все DLL я указал local copy = false и embed interop types = true (пускай все встроит внутрь сборки).
Все скомпилировалось и работает.

Этот же проект скопировал на другой комп. windows 7 x64, office 2007, VS 2013
Сам EXE вылетает при старте (ничего вразумительного в сообщении ошибки)
Запускаю проект через VS
Пишет что не могу включить в сборку microsoft.office.core.dll ибо его нет в системе windows\assembly\GAC\office...\OFFICE.DL L
Порывшись в интернете, установил "Microsoft Office 2007 Primary Interop Assemblies" дабы все dll были в системе.
Ноль реакции.
В списке add references вообще нету microsoft.office

Спасите! Помогите!
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
19.08.2014, 12:51
Помогаю со студенческими работами здесь

Невозможно загрузить файл или сборку "Microsoft.Office.Interop.Excel" при переносе приложения на другой ПК
есть приложение Windows Form. На форме есть button, при нажатии на который некоторые данные выгружаются в xl файл. на моем компьютере все...

Распространение приложения
как распространяют Net приложения? допустим ClickOnce / пишут , в документации , что можно с помощью сервера , тут есть знатоки ,...

Распространение и обновление приложения в локальной сети
Разработано клиентское приложение для работы с БД - все вроде добра, но есть заминка - версия не окончательная, приходится править...

Распространение приложения
Доброго времени суток, до этого момента запускал приложения из среды. Но сейчас появилась нужда запустить программу не на моем компьютере....

Распространение откомпилированного приложения
Привет, Всем. У меня немного глупый вопрос, но очень интересно узнать у тех, кто в этом вариться и знает как все устроено. Если можете...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
3
Ответ Создать тему
Новые блоги и статьи
PhpStorm 2025.3: WSL Terminal всегда стартует в ~
and_y87 14.12.2025
PhpStorm 2025. 3: WSL Terminal всегда стартует в ~ (home), игнорируя директорию проекта Симптом: После обновления до PhpStorm 2025. 3 встроенный терминал WSL открывается в домашней директории. . .
Как объединить две одинаковые БД Access с разными данными
VikBal 11.12.2025
Помогите пожалуйста !! Как объединить 2 одинаковые БД Access с разными данными.
Новый ноутбук
volvo 07.12.2025
Всем привет. По скидке в "черную пятницу" взял себе новый ноутбук Lenovo ThinkBook 16 G7 на Амазоне: Ryzen 5 7533HS 64 Gb DDR5 1Tb NVMe 16" Full HD Display Win11 Pro
Музыка, написанная Искусственным Интеллектом
volvo 04.12.2025
Всем привет. Некоторое время назад меня заинтересовало, что уже умеет ИИ в плане написания музыки для песен, и, собственно, исполнения этих самых песен. Стихов у нас много, уже вышли 4 книги, еще 3. . .
От async/await к виртуальным потокам в Python
IndentationError 23.11.2025
Армин Ронахер поставил под сомнение async/ await. Создатель Flask заявляет: цветные функции - провал, виртуальные потоки - решение. Не threading-динозавры, а новое поколение лёгких потоков. Откат?. . .
Поиск "дружественных имён" СОМ портов
Argus19 22.11.2025
Поиск "дружественных имён" СОМ портов На странице: https:/ / norseev. ru/ 2018/ 01/ 04/ comportlist_windows/ нашёл схожую тему. Там приведён код на С++, который показывает только имена СОМ портов, типа,. . .
Сколько Государство потратило денег на меня, обеспечивая инсулином.
Programma_Boinc 20.11.2025
Сколько Государство потратило денег на меня, обеспечивая инсулином. Вот решила сделать интересный приблизительный подсчет, сколько государство потратило на меня денег на покупку инсулинов. . . .
Ломающие изменения в C#.NStar Alpha
Etyuhibosecyu 20.11.2025
Уже можно не только тестировать, но и пользоваться C#. NStar - писать оконные приложения, содержащие надписи, кнопки, текстовые поля и даже изображения, например, моя игра "Три в ряд" написана на этом. . .
Мысли в слух
kumehtar 18.11.2025
Кстати, совсем недавно имел разговор на тему медитаций с людьми. И обнаружил, что они вообще не понимают что такое медитация и зачем она нужна. Самые базовые вещи. Для них это - когда просто люди. . .
Создание Single Page Application на фреймах
krapotkin 16.11.2025
Статья исключительно для начинающих. Подходы оригинальностью не блещут. В век Веб все очень привыкли к дизайну Single-Page-Application . Быстренько разберем подход "на фреймах". Мы делаем одну. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru