UUID (Универсально Уникальный идентификатор), также известный как GUID (Глобально уникальный идентификатор), согласно RFC 4122 , являются идентификаторами с определенной гарантией уникальности.
лучший способ генерировать их, должен следовать инструкциям по реализации в упомянутом RFC, использовать одного из многих, сообщество исследовало реализации с открытым исходным кодом.
А популярный инструмент Open Source для работы с UUID в JavaScript узел-uuid
Примечание, которое, просто случайным образом генерируя байт идентификаторов байтом или символ символом, не даст Вам те же гарантии как соответствующую реализацию. Кроме того, очень важный, системы, работающие с совместимыми UUID, могут принять решение не принять случайным образом сгенерированные, и много блоков проверки допустимости с открытым исходным кодом на самом деле проверят на допустимую структуру.
UUID должен иметь этот формат:
xxxxxxxx-xxxx-Mxxx-Nxxx-xxxxxxxxxxxx
, Где M и Н положения могут только иметь определенные значения. В это время единственные допустимые значения для M равняются 1, 2, 3, 4 и 5, так случайным образом генерация, что положение сделало бы большинство результатов недопустимым.
По моему опыту, попытка управления сборками взаимодействия с офисом в широком сценарии развертывания - это кошмар. Если вы выполняете развертывание через ClickOnce, даже если вы обойдете проблему с GAC, о которой говорилось выше (возможно, если ваш ИТ-отдел выполнил регистрацию GAC сборок взаимодействия, если это корпоративная среда), вам нужно будет справиться с ситуациями, когда у пользователей есть версия Office, отличная от стандартной - и небеса помогут вам, когда выйдет Office 13 и пользователи начнут обновляться, и это приведет к поломке вашего приложения.
Чтобы обойтись без этой версии -связанные сборки взаимодействия, можно выполнять автоматизацию офиса с помощью pinvoke непосредственно в оболочках Office COM, которые не зависят от версии (они извлекают текущую версию офиса на клиенте из реестра). Однако это будет иметь свои собственные проблемы с развертыванием (вам может потребоваться обновить реестр для обработки компьютеров, на которых установлены PIA, например, что может быть очень сложно при использовании ClickOnce для развертывания), и с ним намного сложнее работать.
Если бы я был на вашем месте, Я бы начал с тщательного изучения функциональности взаимодействия, которую вы используете в своей библиотеке классов - есть ли другой способ предоставить нужную вам функциональность вне офисного взаимодействия на клиентском компьютере? Возможно, это сервис-ориентированное решение, при котором клиенты отправляют запрос серверу на создание настраиваемого офисного документа и предоставляют его для загрузки ...
Вот что я знаю по опыту (должен отметить, что мы не использовали ClickOnce, но я не уверен, почему это имеет значение):
Если вы пишете в Excel 2003 API-интерфейсы и развертывание на компьютере с Excel 2007 будет работать, потому что Excel 2007 по сути олицетворяет Excel 2003. Проблема в том, что некоторые API-интерфейсы были изменены, а некоторые из них даже были удалены. Вам придется попробовать это самостоятельно, чтобы убедиться, что ваше приложение затронуто.
На самом деле, это немного хуже. Если вы запускаете свое приложение на компьютере с установленными Excel 2003 и Excel 2007, ваше использование Interop по-прежнему будет использовать Excel 2007.
Одна из возможностей - использовать SpreadsheetGear for .NET , что дает вам совместимость с Excel Элемент управления Windows Forms полностью реализован в одном.
Лучше всего использовать библиотеку позднего связывания
https://sourceforge.net/projects/exceldata/
Однако: