Как используется файл licenses.licx - PullRequest
49 голосов
/ 12 апреля 2011

У меня есть файл licenses.licx, который включен в одно из свойств моих проектов.Я не уверен, как это используется его DLL.Используется ли он в msbuild?Есть ли у вас какие-либо идеи, как они используются при создании решения?

Ответы [ 3 ]

29 голосов
/ 18 апреля 2011

Поскольку вы указываете, что ответ StellarEleven не помогает, я думаю, вы ищете что-то еще более простое.Это, вероятно, не на 100% правильно, но я понимаю, как это работает:

Файл licx - это просто список "лицензированных" компонентов, используемых вашим приложением.

Каждая строкав файле имеет следующий формат:

[Component Name], [Assembly Name]

Например, один из моих проектов использует лицензионный компонент IP Works NetDial, поэтому мой файл .licx содержит следующую строку:

nsoftware.IPWorks.Netdial, nsoftware.IPWorks

В контексте файла проекта (.csproj) файл .licx упоминается как EmbeddedResource.В процессе сборки LC.exe проверяет, имеет ли машина, выполняющая сборку, соответствующие лицензии для соответствующего компонента, и генерирует двоичный файл .licenses, который в конечном итоге внедряется как ресурс ([AssemblyName] .exe.licenses) в конечном исполняемом файле.

Помогает ли это?

18 голосов
/ 16 сентября 2015

Файл Licenses.licx горе

Подайте это в ASP.NET, Департамент WTF.

Разочарование Когда вы разрабатываете веб-приложение с нашимуправления, появляется загадочный файл с именем licenses.licx.Нет, это не приказ использовать леденец со странным именем, а переходный файл, сгенерированный (и измененный) Visual Studio, который участвует в проверке лицензии.В режиме разработки Visual Studio использует этот файл для записи каждого лицензионного элемента управления, который вы используете в своем дизайне.Затем, когда вы создаете свое приложение, Visual Studio читает этот файл licenses.licx и для каждого упомянутого там элемента управления загружает соответствующую сборку и запускает код лицензии в этой сборке, чтобы проверить, правильно ли лицензирована сборка (то есть, что продуктк которому он принадлежит, был правильно установлен на этой машине).Если все получится, Visual Studio встраивает лицензионный ключ в исполняемый файл.Если этого не произойдет, вы получите странные сообщения об ошибках о том, что элемент управления не лицензирован (мой любимый вариант - «Не удалось преобразовать файл лицензий« licenses.licx »в бинарный ресурс»), к которому я обычно обращаюсь к красочному языку моегопредки).

Licenses.licx на самом деле файл в вашем решении (если вы не видите его там, нажмите Показать все файлы).Visual Studio использует программу lc.exe для компиляции лицензий во встроенные ресурсы вашего приложения, и когда что-то идет не так с компиляцией лицензии, я видел сообщения об ошибках, которые также ссылаются на этот исполняемый файл.

ВотПример строки в файле licenses.licx.

DevExpress.XtraCharts.Web.WebChartControl, DevExpress.XtraCharts.v8.2.Web, версия = 8.2.4.0, культура = нейтральная, PublicKeyToken = 9b171c9fd64da1d1

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

Но это не самая большая проблема с licenses.licx.Дело в том, что Visual Studio имеет склонность касаться этого файла, если вы открываете решение (это «касается», как при изменении даты файла на текущую дату / время).Это отрицательно сказывается на лицензировании, особенно если вы открываете решение на нелицензированном компьютере и используете систему контроля версий.Внезапно ваша сборочная машина скинет эти сообщения «невозможно преобразовать», и вы задаетесь вопросом, что пошло не так.Другая распространенная проблема - когда у вас есть команда разработчиков, работающих над решением: все они неосознанно «модифицируют» этот файл.

Таким образом, ответ, как представляется, заключается не в том, чтобы поместить файл licenses.licx в исходный код.контроль. (статья КБ)

Но это решение проблемы бросает еще один красный флаг: если один из разработчиков в команде добавляет новый элемент управления, который требует лицензирования для формы, добавляется строкав его локальный файл licenses.licx, и он может не отразиться на контроле исходного кода.Бэм, твоя сборочная машина не справляется со сборкой, и Джо, который добавил элемент управления, должен покупать пончики для команды, пока кто-то еще не сломает сборку.

Боюсь, у меня нет хорошего решения этой последней проблемы,потому что, к сожалению, «не помещая licenses.licx в систему контроля версий», похоже, так все решают проблему лицензирования.Другое решение состоит в том, чтобы полностью удалить файл licenses.licx, а затем заставить Visual Studio сгенерировать его заново, открыв решение (хотя на сборочной машине это немного сложно).

В любом случае, надеюсь, что в некоторых случаях все поможетпуть.И удар по ноутбуку с телефоном на самом деле не поможет.

1 голос
/ 06 июня 2018

Мы используем настраиваемую политику регистрации (TFS), которая явно обнуляет ее содержимое, если оно присутствует в списке регистрации.

...