Файл License.licx и лицензированные / нелицензированные машины - PullRequest
4 голосов
/ 01 декабря 2011

В решении VS2010 у меня есть файл license.licx, который содержит:

DataDynamics.ActiveReports.ActiveReport, ActiveReports6, Version=6.1.2814.0, Culture=neutral, PublicKeyToken=cc4967777c49a3ff
DataDynamics.ActiveReports.Web.WebViewer, ActiveReports.Web, Version=6.1.2814.0, Culture=neutral, PublicKeyToken=cc4967777c49a3ff
DataDynamics.ActiveReports.Export.Pdf.PdfExport, ActiveReports.PdfExport, Version=6.1.2814.0, Culture=neutral, PublicKeyToken=cc4967777c49a3ff
DataDynamics.ActiveReports.Design.Designer, ActiveReports.Design6, Version=6.1.2814.0, Culture=neutral, PublicKeyToken=cc4967777c49a3ff
DataDynamics.ActiveReports.Viewer.Viewer, ActiveReports.Viewer6, Version=6.1.2814.0, Culture=neutral, PublicKeyToken=cc4967777c49a3ff

Если я создаю решение на машине, имеющей лицензию на ActiveReport, то все в порядке.Если я создаю решение на машине, на которой нет лицензии на ActiveReport, я получаю:

Ошибка 1 «Не удалось загрузить файл или сборку» ActiveReports6, Версия = 6.1.2814.0, Культура = нейтральная, PublicKeyToken = cc4967777c49a3ff 'или одна из его зависимостей.Операция не поддерживается.(Исключение из HRESULT: 0x80131515) 'LC

На машине, на которой нет лицензии на ActiveReport, если я удаляю вышеуказанные строки из файла license.licx, то все строится нормально.Я всегда думал, что если лицензия не может быть найдена, то будет использоваться нелицензионная версия, но это не убьет сборку.Как заставить это решение работать на любом компьютере, независимо от того, есть ли у него лицензия или нет?

Ответы [ 4 ]

3 голосов
/ 06 декабря 2011

Связался с ActiveReports, и они сказали мне, что файл лицензии может быть сохранен для каждого пользователя, независимо от того, есть ли у него платная лицензия или нет. Хитрость заключается в том, что пользователи, которые не будут генерировать отчеты, должны установить пробную лицензию (которую ActiveReports предоставляет бесплатно), а пользователи, оплатившие лицензию, будут иметь собственную лицензию. Пробная лицензия, так же как и реальная платная лицензия, будет работать с файлом license.licx и обеспечит надлежащие действия при обнаружении записи, которую она распознает в файле .licx.

3 голосов
/ 01 декабря 2011

На самом деле кажется, что на этой машине не установлена ​​конкретная версия ActiveReports.

Мы решаем подобные проблемы, сохраняя внешние сборки по пути относительно проекта (т.е. .. \ Assemblies) и изменяя все проекты для включения HintPath, например:

<Reference Include="ActiveReports3">
  <SpecificVersion>False</SpecificVersion>
  <HintPath>..\..\..\..\Assemblies\ActiveReports3.dll</HintPath>
</Reference>

Таким образом, вам не нужно беспокоиться о том, что у каждого разработчика установлена ​​точно такая же версия.Вы должны быть в состоянии отлаживать с этой конфигурацией, но не собирать для выпуска.

Обновление

Я забыл упомянуть другую практику, которую мы реализуем: если компонент не требует абсолютноэто (у нас есть только один, который я могу придумать), мы никогда не храним версии в файле license.licx.Наша запись licenses.licx для приведенного выше примера:

DataDynamics.ActiveReports.ActiveReport3, ActiveReports3

Если вы делаете это, вы должны держать поверх файла licenses.licx, но это определенно решает различные проблемы с версиями.

2 голосов
/ 01 декабря 2011

Если я создаю решение на машине, у которой нет лицензии на ActiveReport, я получаю

Это часть проблемы. Как правило, лицензирование требует, чтобы у каждого разработчика была лицензия. Попытка лицензировать только часть вашей команды разработчиков может привести к нарушению вашей лицензии ActiveReports.

1 голос
/ 02 декабря 2011

Должно быть прекрасно использовать пробную версию ActiveReports так, как вы описываете.Я видел ряд проблем с лицензированием Visual Studio для различных компонентов.Обычно их можно решить, выполнив следующие действия:

  • Очистите решение, используя Build> Clean
  • Удалите файл licx (Visual Studio сгенерирует этот файл по мере необходимости).
  • Добавьте элемент управления ARViewer в форму в вашем проекте (вы можете удалить его позже).Это необходимо сделать на компьютере с действующей лицензией ActiveReports.И это то, что должно инициировать регенерацию файла licx с правильной информацией.
  • Перестройка (убедитесь, что вы действительно перестраиваете, я знаю, что это должна быть чистая + сборка, но перестройка, похоже,иногда важно).

Кроме этого, просто убедитесь, что все ваши ссылки верны.Например, убедитесь, что у вас нет нескольких версий библиотек DLL, на которые есть ссылки в разных проектах решения, и убедитесь, что «Копировать локальную» и «Использовать определенную версию» соответствуют вашим ожиданиям.

Если проблемы не устраненысоздайте новый проект, добавьте ActiveReports (или любой другой компонент, с которым у вас возникли проблемы) и создайте быстрое приложение в стиле «здравствуй, мир», чтобы убедиться, что оно работает правильно, а затем сравните два проекта (ссылки, файлы и т. д.).

...