Почему я должен написать CLS-совместимый код?

Элемент Обновления в элементе продукта, объединенном с надлежащим планированием действия, выполнит удаление, которое Вы после. Обязательно перечислите коды обновления всех продуктов, которые Вы хотите удалить.



  

Примечание, что, если Вы осторожны со своими сборками, можно предотвратить людей от случайной установки более старой версии продукта по более новому. Это - то, для чего поле Maximum. Когда мы создаем установщики, мы устанавливаем Максимум UpgradeVersion на создаваемую версию, но IncludeMaximum = "нет" для предотвращения этого сценария.

у Вас есть выбор относительно планирования RemoveExistingProducts. Я предпочитаю планировать его после InstallFinalize (а не после InstallInitialize, как другие рекомендовали):


  

Это оставляет предыдущую версию продукта установленной до окончания новых файлов, и ключи реестра копируются. Это позволяет мне переместить данные от старой версии до нового (например, Вы переключили устройство хранения данных пользовательских настроек от реестра до XML-файла, но Вы хотите быть вежливыми и переместить их настройки). Эта миграция сделана в задержанном пользовательском действии незадолго до InstallFinalize.

Другое преимущество является эффективностью: если существуют неизменные файлы, Windows Installer не потрудился копировать их снова, когда Вы планируете после InstallFinalize. Если Вы планируете после InstallInitialize предыдущая версия полностью удалена сначала, и затем новая версия установлена. Это приводит к ненужному удалению и перекопированию файлов.

Для других опций планирования, посмотрите тему справки RemoveExistingProducts в MSDN. На этой неделе ссылка: http://msdn.microsoft.com/en-us/library/aa371197.aspx

61
задан Community 23 May 2017 в 11:47
поделиться

4 ответа

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

47
ответ дан 24 November 2019 в 17:15
поделиться

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

Например, Visual Basic регистр не учитывается, в то время как C #. Одним из требований соответствия CLS является то, что общедоступные (и защищенные) имена членов не должны различаться только по регистру, что гарантирует безопасное использование ваших библиотек кодом Visual Basic или любым другим языком .NET, который не различается на основе чехол.

43
ответ дан 24 November 2019 в 17:15
поделиться

Ответ - обеспечить максимальную совместимость между языками .NET. CLS - это lingua franca , который позволяет сборкам C # работать с F #, Iron Python, C ++ / CLI, VB.NET, Boo и всеми другими языками .NET. Выйдите за эту границу, и ваша сборка может работать правильно, но не обязательно.

17
ответ дан 24 November 2019 в 17:15
поделиться

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

Другими словами, это хорошая идея сделать ваш код совместимым с CLS, если у вас нет причины не ] к.

11
ответ дан 24 November 2019 в 17:15
поделиться
Другие вопросы по тегам:

Похожие вопросы: