2016-07-28 11 views
0

В Visual Studio у меня есть решение. В этом решении у меня есть 2 проекта. Один из них - VSTO, поэтому мы можем сделать плагин для Excel. Другой проект заключается в создании файла .xll, чтобы мы могли создавать пользовательские функции.Связь между VSTO и .XLL

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

Однако, поскольку мы хотим, чтобы наши пользователи могли использовать наши пользовательские функции, они должны войти в систему. Я думаю, что эти 2 проекта не могут напрямую связываться, поэтому .xll addin не будет знать, является ли пользователь вошел в систему или нет.

Есть ли в любом случае для этих двух проектов для общения? Возможно, через посредника, как класс со статическими переменными?

EDIT:
Дополнительная информация:
Оба проекта написаны на C# код. Я смог сделать это для файла .xll с помощью ExcelDNA.

Так что, если есть способ, который я могу создать, возможно, класс C#, который может координировать или обмениваться данными между двумя проектами, которые были бы действительно замечательными. Поскольку данные для входа - это не единственное, что мы хотим разделить.

Я надеюсь, что в классе будет статическая логическая переменная, состоящая в том, входит ли пользователь в систему. Таким образом, VSTO может установить логическое значение и получить его .xll.

ответ

0

Я бы использовал систему лицензирования, которая позволила бы пользователю проверить лицензионный ключ. Этот процесс может происходить в рамках VSTO. Затем я бы воспользовался двумя проверками:

  1. если в VSTO лицензионный ключ подтвержден, то загрузите xll, в противном случае не загружайте его.
  2. в xll, используя относительный путь, я бы нашел и проверил второй раз лицензионный ключ (чтобы пользователь не загружал непосредственно xll).

Для этого требуется только проверка ключа лицензии на C# (VSTO) и C (Xll), то есть наличие алгоритма ключа проверки, реализованного на обоих языках.

+0

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

1

Вы можете добавить скрытую функцию [ExcelFunction (IsHidden = true)] в .xll, которую вы можете вызвать из дополнения VSTO с помощью Application.Run.

+0

Есть ли в любом случае возможность обмена данными между двумя проектами? Если нет, возможно ли создать UDF в моем VSTO с помощью ExcelDNA? –

+0

VSTO не позволяет вам создавать UDF. Вы можете полностью избавиться от части VSTO и поместить все в надстройку Excel-DNA. Скрытые функции - это простой способ передачи данных между двумя надстройками. Есть и другие способы, но они сложны. Группа Excel-DNA Google лучше подходит для общей дискуссии. – Govert