У меня есть приложение, разработанное в Visual Studio 2005, которое я развертываю с помощью ClickOnce. Мое решение содержит два проекта - уровень пользовательского интерфейса, закодированный в VB, и библиотеку классов, закодированную в C#. В моей библиотеке классов C# есть код, который использует ассемблирование Outlook и Excel (Microsoft.Office.Interop.Outlook и Microsoft.Office.Interop.Excel, обе версии 11). Вот мои вопросы.Ссылки на сборку Microsoft Office Interop
- Хотя я не нашел, где это указано как абсолютное, я понимаю, что вы должны иметь соответствующие версии приложений Office (Outlook/Excel) для того, чтобы установить приложение, которое использует сборки Interop , Это верно?
Если (1. = Да) Тогда
Как бы вы справиться с ситуацией, в которой ваше приложение использует Interop сборки для всего пару функций, которые будут использованы лишь немногие из общая база пользователей? Почему я должен требовать от каждого пользователя моего приложения установки Microsoft Office, если только некоторые пользователи будут использовать эти функции? Эти сборки Interop являются только .dll файлами, и что делает их настолько отличными от других, что вы не можете просто публиковать файл с вашим проектом и удовлетворять этой ссылке независимо от того, какое программное обеспечение установлено на клиенте? (Ясно, что я плохо разбираюсь в GAC, и это влияет на поведение Visual Studio.) Я был бы счастлив написать свой собственный код, чтобы проверить наличие необходимого программного обеспечения Office для нескольких функций, которые их используют. Нет Управление, нет доступа к функции ...
Else
Если мое понимание на это неверно, то как я могу настроить мои ссылки и настройку ClickOnce, чтобы пользователи не столкнуться со следующей ошибкой при попытка установки?
«Не удается установить или запустить приложение. Приложение требует, чтобы узел офиса версии 11.0.0.0 будет установлена в глобальном кэше сборок (GAC) в первую очередь.
Пожалуйста, обратитесь к системному администратору.»
- Я попытался установить ссылки на Interop ссылки Свойства CopyLocal как для True, так и для False.
- В моем списке приложений приложений ClickOnce я попытался установить эти сборки для включения, исключения и предварительного требования.
- В моем исследовании я видел, где некоторые люди имеют эти ссылки, указывающие на * C: \ WINDOWS \ assembly \ GAC *, мои указывает на * C: \ Program Files \ Microsoft Visual Studio 9.0 \ Visual Studio Tools for Office \ PIA \ Office11 *, но я не нашел способа изменить ссылочный путь. Согласно http://msdn.microsoft.com/en-us/library/ez524kew(VS.80).aspx, вы НЕ МОЖЕТЕ добавить ссылки от GAC, так как же другим людям это удалось?
- Я пробовал копировать ссылки из * C: \ Program Files \ Microsoft Visual Studio 9.0 \ Visual Studio Tools для Office \ PIA \ Office11 * в каталог проекта и ссылаться на них там.
End If
Я полагаю, главное, что мне нужно знать, как/если я могу включить эти сборки в моей публикации и удовлетворяют или обойти требование GAC.
Если возможно, постарайтесь максимально точно ответить на мои конкретные вопросы. Хотя статьи полезны, я уже прочитал много статей и попробовал много предлагаемых решений и не нашел успеха. Имейте в виду, что я не понимаю логистики того, как все это работает.
Простите меня за мое непонимание и благодарю вас за любую помощь, которую вы можете предложить. Это очень ценится!
Благодарим за отзыв. До сих пор у меня не было проблем с версией - пользователи с 2003 и 2007 годами смогли использовать эти функции просто отлично. Я предполагаю, что более простой вопрос, чтобы действительно настроить то, что мне интересно, можно ли сделать мое приложение доступным для пользователей, которые НЕ имеют ЛЮБОЙ версии Office, позволяя им использовать функции non-Interop моего приложения? Я понимаю, что они должны иметь Outlook/Excel, чтобы использовать мои функции на основе Interop, но большая часть моего приложения не имеет ничего общего с Office. – 2009-08-06 16:55:05
Я хотел бы думать, что один экземпляр кода Interop не будет полностью ограничивать ваше приложение теми, у кого установлен Office. – 2009-08-06 16:55:37
Одна вещь, которую следует попробовать использовать для загрузки по требованию (http://msdn.microsoft.com/en-us/library/ak58kz04(VS.80).aspx) - вы должны иметь возможность кодировать так, чтобы до вызывая/загружая сборку, содержащую ваши классы взаимодействия с Интернетом, есть проверка, чтобы установить, установлен ли Office. То, что я не знаю, - это то, что ClickOnce задерживает проверку зависимостей, пока сборка «Загрузка по требованию» на самом деле не запрашивается для загрузки, или если она проверяет наличие всех возможных зависимостей вне ворот. –