Компилятор лицензий .NET (LC.EXE), кажется, игнорирует содержимое licenses.licx на одном компьютере, но не на другом.Зачем? - PullRequest
4 голосов
/ 15 июня 2010

Справочная информация: Я установил очень простое решение .NET в VS2008, которое содержит достаточно кода для отображения отчета ActiveReports в окне предварительного просмотра. Компонент ActiveReports использует механизм licenses.licx, чтобы определить, правильно ли он лицензирован или нет. Если он не найдет действительный лицензионный ключ, он отобразит заметное сообщение в предварительном просмотре отчета, в котором будет указано: «Это пробная копия, [бла-бла-бла и т. Моя проблема: У меня два компьютера, на которых установлены одинаковые версии VS2008 и ActiveReports. У меня есть действующие лицензии для каждой установки. Теперь, когда я строю свое решение на одном компьютере, я получаю предварительный просмотр отчета без баннера с оценочным сообщением, а на другом точно такое же решение компилируется в приложение, которое отображает оценочное сообщение.

Что я обнаружил до сих пор: Использование Reflector.NET Я обнаружил, что на второй машине (которая отображает оценочное сообщение) компилятор лицензии ( LC.EXE) почему-то игнорирует строку лицензии ActiveReports в licenses.licx. Но он не будет отображать никаких сообщений об ошибках или предупреждений.

& rArr; Таким образом, этот вопрос остается: При каких обстоятельствах LC.EXE решит игнорировать строку текста из licenses.licx, когда будет выдан MyApplication.licenses встроенный ресурс?


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

P.P.S.: Не совсем уверен, является ли это вопросом переполнения стека или вопросом для суперпользователя.

1 Ответ

3 голосов
/ 23 июня 2010

ОК - я не уверен, но я подозреваю причину этой проблемы.

Я подозреваю, что LC.EXE будет проверять все элементы управления, перечисленные в licenses.licx, когда он скомпилирует этот файл.Если во время этого исследования какой-либо из перечисленных элементов управления определит, что он не лицензирован должным образом (по какой-либо причине; например, из-за того, что лицензия действительно отсутствует или из-за поврежденной установки), компилятор лицензии не выдаст фактический лицензионный ключ дляпоток выходных ресурсов.


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

...