Как выбрать версию фреймворка .NET из Excel? - PullRequest
2 голосов
/ 26 апреля 2009

Как можно указать, что Excel использует .NET Framework версии 2.0 при запуске .NET-библиотек, кроме добавления файла excel.exe.config в папку Office Binary?

Наше приложение работает в Excel и использует VBA, который выполняет вызовы в управляемый код в сборках .NET. Я считаю, что учебник может сделать это, добавив файл excel.exe.config в двоичный каталог Office, содержащий:

<?xml version="1.0"?>
<configuration>
  <startup>
    <supportedRuntime version="v2.0.50727"/>
  </startup>
</configuration>

Эта опция неприемлема для наших клиентов, во-первых, потому что они просто не позволяют нам добавлять файлы в каталог Office, и даже если бы они сделали это, мы не могли бы рискнуть взломать какое-либо приложение, используя .NET v1.1, который используется по умолчанию Выбор Excel.

Решение, которое, как мы думали, сработало бы, состояло в том, чтобы скопировать файл Excel.exe в каталог наших собственных приложений из каталога Office клиента, добавить туда файл конфигурации и выполнить этот файл. Это работает хорошо, но у нас возникают серьезные проблемы с установкой, когда сценарий установки не может найти правильную версию Excel. Плюс это отвратительный клудж, во-первых.

Любые идеи приветствуются. Интересно, может ли работать слой неуправляемого (не .NET) в DLL? Некоторые советы о том, как это сделать, или более простая альтернатива будут оценены, поскольку это нетривиально.

Связанный:

.NET app.config вопрос

Ответы [ 3 ]

8 голосов
/ 26 апреля 2009

Другой способ настроить версию среды выполнения, выбранную для Excel, - изменить следующий раздел реестра:

HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\.NETFramework\Policy\AppPatch\v2.0.50727.00000\excel.exe

По умолчанию этот ключ заставляет Excel использовать каркас 1.1; удаление или переименование приводит к тому, что Excel загружает последнюю доступную версию.

Если вы беспокоитесь о взломе .NET 1.1 внутри Excel, возможно, вам придется запустить вторую переименованную копию excel.exe. Платформа .NET может быть загружена только один раз в данный процесс Windows, поэтому в одном экземпляре Excel.exe вам нужно выбрать между 1.1, 2.0 или выше.

1 голос
/ 02 февраля 2010

Следующая статья довольно исчерпывающая по этому вопросу. http://mcfunley.com/331/a-real-head-scratcher-courtesy-the-clr-and-office-teams. Я думаю, что .NET 4.0 будет спасителем для тех, у кого есть опция.

1 голос
/ 26 апреля 2009

Microsoft выпустила патч, который должен быть установлен для каждого пользователя с помощью надстройки. Вы можете получить патч здесь:

http://support.microsoft.com/kb/908002

См

.NET app.config вопрос

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...