Как я могу запретить Visual Studio создавать license.licx

В нашем проекте мы используем сторонние элементы управления. Почти каждый раз, когда я дважды щелкаю файл, в котором тоже есть представление дизайна, Visual Studio с героическими усилиями пытается вызвать дизайнера и после некоторого отсутствия ответа добавляет (рождает) файл license.licx в наше решение. Это излишне нарушает систему управления версиями: добавление файла также изменяет csproj, а также извлекается исходный файл кода и designer.cs (хотя в них нет никаких изменений).

  1. Я хочу видеть только код (щелкните правой кнопкой мыши, Просмотреть код), я не хочу видеть представление дизайнера.
  2. Каждый раз, когда мне нужно отменить ненужные изменения, а это требует времени (наше решение огромно), тогда как Visual Studio снова не отвечает, так как перезагружает весь shebang после изменения csproj.
  3. Когда делаю двойной щелчок, сразу понимаю, что сделал, но тогда уже поздно, заводной механизм начинает скрежетать.

Если кто-нибудь знает, как отключить добавление этой лицензии, дайте мне знать. К вашему сведению: соответствующие сторонние библиотеки - это DevExpress WinForms и IdeaBlade DevForce Classic (который имеет некоторую интеграцию с DevExpress). Я использую VS 2012. И наш продукт является продуктом конечного пользователя, а не сторонней библиотекой.

Уточнение: речь идет о среде разработки. См. Как Licenses.licx на основе .Net модель лицензирования компонентов работает? - не рекомендуется держать ее в системе контроля версий. Я не хочу спорить об этом. Давайте сосредоточимся на том, как предотвратить попытки Visual Studio создавать его все время.


person Csaba Toth    schedule 05.08.2013    source источник
comment
Господа, уважаемые противники: даже если вы считаете, что мои мотивы ошибочны и мне не следует удалять license.licx, давайте обсудим это, пожалуйста, примите во внимание, что заключение по этой теме может быть полезно для других, которые находятся в таком же положении, как и я. Спасибо за понимание!   -  person Csaba Toth    schedule 06.08.2013
comment
Я убрал ярость на лице, так как некоторые люди могут подумать, что это не смешно.   -  person Csaba Toth    schedule 06.08.2013
comment
С другой стороны; поскольку это часть входных данных для сборки, почему бы вам не захотеть, чтобы им управляли как часть системы управления версиями? Я уверен, что у вас не возникнет проблем с включением других ресурсов в систему управления версиями?   -  person Rowland Shaw    schedule 06.08.2013
comment
community.devexpress.com/ blogs / ctodx / archive / 2009/03/06 / Visual Studio имеет тенденцию касаться этого файла, если вы откроете решение. Это наносит ущерб лицензированию, особенно если вы открываете решение на нелицензированной машине и используете систему контроля версий. Внезапно ваша машина сборки сбросит эти сообщения о невозможности преобразования   -  person Csaba Toth    schedule 06.08.2013
comment
Никогда не было никаких проблем, и мой сервер сборки собирает множество проектов, большинство из которых требует лицензий; это скорее случай правильной настройки среды сборки ...   -  person Rowland Shaw    schedule 06.08.2013
comment
У нас есть правило не иметь файл с VS 2005/2008. Может, это больше не доставляет проблем в возрасте VS 2012? У нас определенно нет времени это обнаруживать. И зачем нам начинать включать его сейчас, если без него у нас нет проблем! Тогда зачем нам это нужно? (помимо этого раздражения, о котором идет речь). Почему это было так важно для нас?   -  person Csaba Toth    schedule 07.08.2013
comment
Несмотря на то, что пакет установлен и лицензирован на сервере, эти файлы фактически нарушают наши сборки TFS (Azure DevOps). Каждый. Одинокий. Время.   -  person reckface    schedule 10.10.2018
comment
@reckface Это ПИТА!   -  person Csaba Toth    schedule 10.10.2018


Ответы (5)


Вы можете создать событие пост-сборки, которое удалит файл .licx за вас. Мы справились с этим раздражением в нашей команде, и помимо ручного исключения или удаления его, событие пост-сборки - ваш лучший выбор. Каждый раз, когда вы открываете форму Windows Form, файл будет добавляться снова, если эта форма ссылается на какие-либо сторонние библиотеки DLL или использует их.

Вы можете указать события до и после сборки через консоль или щелкнув проект правой кнопкой мыши и выбрав «Свойства» -> «События сборки». Надеюсь это поможет.

person captray    schedule 06.08.2013
comment
Я очень ценю твой ответ. Скорее всего, в Visual Studio нет переключателя для включения создания licx, поэтому ваш ответ кажется хорошим решением. На самом деле у нас есть модульный тест, который не работает, если создается такая мошенническая лицензия, предотвращая его случайные коммиты. У вас есть образец сценария пост-сборки? Что вы используете для управления решением в сценарии после сборки? PowerShell + EnvDte или что-то еще? StudioShell? - person Csaba Toth; 06.08.2013
comment
Вы можете перейти к событию Post Build Event и вставить что-то вроде этого ... del $ (SolutionDir) Project \ folder \ license.licx, и это должно позаботиться об этом. - person captray; 07.08.2013
comment
Удаление licenses.licx приведет к ошибке Не удалось найти файл ... \ licenses.licx. Вместо этого мы могли бы добавить это событие перед сборкой, чтобы создать (или перезаписать) пустой файл licenses.licx: copy / y NUL $ (ProjectDir) Properties \ licenses.licx ›NUL - person Chris Xue; 30.03.2016

Если кто-то ищет решение этой проблемы, потому что они используют предварительно скомпилированные лицензии через инструмент Lc.exe и хотят предотвратить конфликт licenses.licx на сервере сборки, отредактируйте файл csproj и измените строку, которая выглядит следующим образом:

<EmbeddedResource Include="Properties\licenses.licx" />

в это:

<ItemGroup Condition=" '$(Configuration)' != 'Release' " > <EmbeddedResource Include="Properties\licenses.licx" /> </ItemGroup>

person Andrew Stakhov    schedule 20.10.2016
comment
Это выглядит многообещающе. Но я больше не в этой ситуации. - person Csaba Toth; 21.10.2016

Для вашего пункта №1 вы можете запретить открывать конструктор двойным щелчком, но вместо этого по умолчанию открываете редактор кода.

Вы можете сделать это:

  • щелкнув правой кнопкой мыши файл .cs, имеющий форму
  • выберите "Открыть с помощью ..."
  • выберите "Редактор CSharp" (или VB)
  • нажмите "Установить по умолчанию"
  • и ОК

Если вы хотите изменить его позже, выполните ту же процедуру, но выберите «Редактор формы CSharp».

person M-Peror    schedule 21.11.2016
comment
Очень практичная идея! - person Csaba Toth; 22.11.2016

Если вы используете пакет NuGet EmptyLicensesLicx, он будет создавать пустой Licenses.licx файл в вашем проекте при каждой сборке ( это все, что вам действительно нужно).

person C. Augusto Proiete    schedule 14.11.2019

Этот файл license.licx важен. Вы действительно хотите, чтобы это было в ваших проектах, в которых используются компоненты, лицензированные у третьих лиц. Если вы не используете сторонние компоненты, файл licences.licx добавляться не будет.

person Rowland Shaw    schedule 05.08.2013
comment
Зачем мне нужен license.licx? Если я случайно не дважды щелкну по файлу, он даже не будет создан. Может ли это вызвать проблемы в команде разработчиков? Например, Джон Доу дважды щелкает что-то еще, а затем создает одно с другим содержанием? Я предполагаю, что под капотом есть некоторая криптография. - person Csaba Toth; 06.08.2013
comment
(Джон Доу работает с тем же программным обеспечением, что и я. И мне не нужна лицензия licx в системе управления версиями. Возможно, когда мы будем выпускать выпуск, он нам понадобится. Наш продукт - продукт конечного пользователя, а не сторонняя библиотека. . Я надеюсь, что мы не нарушаем никаких лицензий с нашими сторонними поставщиками.) - person Csaba Toth; 06.08.2013
comment
Итак, короткий вопрос: почему для меня так важно то, что я должен это иметь? Мне нужны объяснения. - person Csaba Toth; 06.08.2013
comment
stackoverflow.com/questions/51363/, не рекомендуется хранить ее в системе контроля версий. Мы работаем в большем количестве команд над одним и тем же источником. Много людей. - person Csaba Toth; 06.08.2013
comment
Совет по ответу, получившему наибольшее количество голосов по этому другому вопросу, а также по поводу Дениса, заключается в том, что он должен быть включен, чтобы компилятор лицензий знал, что нужно искать лицензию для включения в окончательный проект. Вы пытались удалить все licences.licx, собрать (или даже использовать сборку с непрерывной интеграцией) и запустить результат, в котором не установлена ​​версия элементов управления для разработчиков? Я ожидал, что результат будет каким-то некорректным ... - person Rowland Shaw; 06.08.2013
comment
Хотелось бы знать, почему это привлекает так много анонимных отрицательных голосов (по сравнению с людьми, которые комментируют) - person Rowland Shaw; 15.09.2015
comment
Я предполагаю, что анонимные отрицательные голоса вызваны тем, что до сих пор нет объяснения, почему это так важно. Без случайного двойного щелчка его нет, и все работает (в среде разработки). Очевидно, это важно в случае подготовки сборок для тестирования или выпуска сборок, но мы говорим о повседневной разработке. - person Csaba Toth; 10.10.2018
comment
Нельзя сказать, что что-то важно, не объясняя почему. - person Anders Lindén; 27.02.2019