Почему в моем каталоге релизов bin находятся System. *. * Dll? - PullRequest
0 голосов
/ 22 ноября 2018

При создании моего приложения, которое состоит из 10 строк кода и зависит от Zeroconf & Newtonsoft.json, оно выдает около 104 библиотек в моей директории релиза bin, и многие из них - System. . библиотек,

Почему?Как я могу уменьшить его до 3 DLL?один для моей библиотеки, один для zeroconf и один для Newtonsoft.Json.

Screenshot

nuget После установки .Net 4.7.1

Ответы [ 2 ]

0 голосов
/ 26 ноября 2018

Это проблема стандарта .net 2.0 / net 4.6 / 4.7.1, которая была улучшена в 4.7.2:

". В .NET Framework 4.7.2 у нас есть исправления известных проблем времени выполненияс .NET Standard 2.0. Мы внесли изменения в среду выполнения, чтобы не требовал развертывания дополнительных файлов вместе с вашей стандартной библиотекой .NET"

Итак, запустите VisualУстановщик Studio 2017 и установите .Net Framework 4.7.2 и Target Pack и настройте целевое приложение на .net 4.7.2.

0 голосов
/ 22 ноября 2018

В среде IDE C # для этого есть опция «Определенная версия = Ложь».Недоступно в C ++ / CLI IDE.Честно говоря, это не настоящая проблема.Возможно, вы неправильно используете атрибут [AssemblyVersion].Эта версия связана с общедоступными классами в сборке.Если вы сделаете какие-либо изменения в открытых членах этих классов, вы получите потенциально опасное изменение, которое может привести к сбою кода, который зависит от этих классов.

В этот момент вы должны изменить [AssemblyVersion],И любой проект, использующий сборку, должен обновлять свою справочную сборку и должен быть перекомпилирован.

В противном случае неразрывное изменение, такое как исправление ошибки или подстройка в невидимых классах, создает новый файл, которыйв остальном полностью совместим с любым проектом, который его использует.Вам следует обновить номер [AssemblyFileVersion].Который в проекте C ++ / CLI требует обновления неуправляемого ресурса Version.Изменение соответствующего файла .rc может быть автоматизировано, или вы можете использовать # define.

Обратите внимание, что базовые сборки .NET в версии 2.0 вели себя так же.Их версия [AssemblyVersion] оставалась на уровне 2.0.0.0 в версиях 3.0, 3.5 и 3.5 SP1.Их версия файла началась с 2.0.50727.42.И за последние 5 лет его многократно увеличивали, вплоть до 2.0.50727.4927, «дай или возьми».

Для справки: эта ошибка VS2010, с которой вы связаны, не является ошибкой.Это никогда не срабатывало раньше, провал молчал.Это недостаток системы сборки C ++, mt.exe встраивает манифест после строгого имени сборки.И ломает строгое имя в процессе, потому что это меняет хеш файла.VS2010 на самом деле является улучшением, он предупреждает об этом, а не молча пропускает сломанное строгое имя.Вам не нужно откладывать подпись, вы можете подать в отставку только с -Ra в событии после сборки.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...