Совместимость C# и MS Office 2010

maximovega

Ребята, доброе утро!
Посоветуйте, что нужно сделать, чтобы начала работать программа в C#.
Ситуация такова:
Код начинается подключением следующего (приведу только то, что вызвало проблему; подчёркнуто волнистой линией, подчёркивается только слово Office):
using Microsoft.Office.Interop.Excel;
using Excel = Microsoft.Office.Interop.Excel;

Когда запускаю код готовой кнопочкой, всё работает, когда нажимаю Run в самом коде, предлагает выполнить Last successful build (правильно я понимаю, что кнопочка автоматически, не спросив разрешения, этот Last successful build выполняет?) и приводит список из двух ошибок и четырёх предупреждений:
Error 1: The type or namespace name 'Office' does not exist in the namespace 'Microsoft' (are you missing an assembly reference?)
Error 2: то же самое, только про вторую строчку (подчёркнутую)
Warning 1: Cannot find wrapper assembly for type library “Excel“
Warning 2: Cannot find wrapper assembly for type library “Microsoft.Office.Core“
Warning 3: The referenced component “Excel“ could not be bound
Warning 4: The referenced component “Microsoft.Office.Core“ could not be bound
Проблемы появились после установки Office 2010. Других изменений, кажется, не было.
Чем грозит простое исполнение Last successful build? И что сделать, чтобы всё же программа работала должным образом?

zorin29

Когда запускаю код готовой кнопочкой, всё работает, когда нажимаю Run в самом коде, предлагает выполнить Last successful build
Что ты понимаешь под "готовой кнопочкой", и под "Run в самом коде"?
Ошибка, которую ты приводишь, вызвана тем, что у тебя нет ссылок на сборки Microsoft.Office.Interop.Excel . Посмотри References твоего проекта в окне Solution Explorer.
Чем грозит простое исполнение Last successful build?
Ничем, просто твои изменения не компилируются, и запускается старая версия программы.

maximovega

Да, в окошке References Project Explorer'a эти ссылки, в отличие от остальных, обозначены не серым кирпичиком, а кирпичиком с восклицательным знаком. В окошке ниже (Properties) для них есть поле Isolated, в отличие от "правильных", и, в отличие от других полей, не бледно-серое, а чёрное. Больше ничего не нажимается, не делается...
Что можно поправить?

AE169

Попробуй удалить референсы и заново их вставить. Могло именование поменяться

okis

Скорее всего, их и не было. Они здесь:
http://www.microsoft.com/downloads/en/details.aspx?FamilyID=...

maximovega

Удалить и вставить снова - то есть стереть эти две строчки, сохранить код без них, написать снова, а потом запускать?
А если, как пишет , их не было (правильно я понимаю, это значит, что того, что эти строчки подключают, теперь по странным причинам нет? то что делать?

zorin29

Удалить и вставить снова - то есть стереть эти две строчки, сохранить код без них, написать снова, а потом запускать?
Нет, это значит, выделить строчку с кирпичиком в Project Explorer, нажать Del, а потом сделать Add reference заново

maximovega

А как делать Add? Когда нажимаю правую кнопочку на слово References, такая опция есть, но неактивная (серенькая). И как я потом найду, что вставить, если удалю?

maximovega

И они даже не удаляются, нет такой опции... :(

zorin29

тут моя телепатия отказывает, прошу скриншоты студии в студию.
скриншот №1:
Когда нажимаю правую кнопочку на слово References, такая опция есть, но неактивная (серенькая).
скриншот №2: окошко Project Properties, закладка Application

maximovega

Доступ выгружать файлы запрещён, не получается! :(
Могу только написать, что при нажатии правой кнопки на References в Project Explorer появляется окошко с тремя опциями: Add Reference, Add Web Reference и Add Service Reference - и все серенькие, а при нажатии на одну из составляющих тех самых References (в проблемном случае - Excel и Microsoft.Office.Core) появляется окошко с единственной опцией Properties, если её выбрать, просто станет активным окошко более подробной информации ниже.

maximovega

Ой, оказалось, когда закрыла исполняемое окошко, стало можно редактировать... :)
Как тогда найти эти же самые ссылки после удаления?

zorin29

запомнить имя, а потом искать его в открывшемся окне на закладке .NET

maximovega

А там совсем нет таких... Даже просто начинающихся на Microsoft.Office.
То есть теперь C# вообще не будет с ним работать?...

okis

Ты попробовала скачать и установить PIA?

maximovega

Что это такое?
Мне нельзя самостоятельно (всё заблокировано, даже если попытаюсь :))...

okis

Primary Interop Assemblies, сборки, которые нужны для работы с офисом.
Тогда попробуй извлечь их из msi или скопировать с другого компа и добавить через add existing assembly.

AE169

1 - попробуй поискать эти интеропы в програм файлсс.
2 - скажи, под каким фреймворком у тебя проект собран. может это какой дремучий, старые интеропы затерлись, а новые ты не подцепишь из-за конфликта фреймворков.
PIA качаешь тут, если что линк. А открываешь их в любую папку при помощи любого msi extractor-a. Только я хз, надо ли по ним regsvr32 пробегать или так подцепит? Оттуда их в референсы добавляешь через вкладку Browse

maximovega

А может исчезнуть проблема, если изменить в коде
public const string XLS_1 = "Provider=Microsoft.Jet.OLEDB.4.0;" + "Data Source=F:\\Tasks\\Person\\Claim.xls;" + "Extended Properties=Excel 8.0";
8 на 10?
В каких Program Files нужно смотреть?

okis

Вряд ли, ссылки останутся на другую версию Екселя.
У тебя есть компьютер, на котором это работает? Я бы сделал так: запустил программу на нём, посмотрел бы Dlls в программе Process Explorer для соответствующего процесса, скопировал бы их с той машины на эту, переставил ссылки на сборки.

FRider

а может надо просто попробовать, а не спрашивать на форуме, что может быть?

maximovega

У меня есть только терминал, на котором могу использовать Visual Studio. В минимальной мере... На нём даже диспетчер задач недоступен...
Попробую сейчас 8 - > 10... Можно прямо так?

zaqwerd

  Попробую сейчас 8 - > 10... Можно прямо так?
МОжно. а браузер и паинт доступен*? если да то сделай скрипшот и скинь в форум!
Оставить комментарий
Имя или ник:
Комментарий: