Исключите другие методы, переменные и классы, которые не нужны для работы вашего метода - PullRequest
0 голосов
/ 03 ноября 2018

Вы загружаете пример внешнего кода с библиотеками, прикрепленными к нему в Visual Studio. Теперь есть метод, который вы хотите использовать в своем коде. Есть ли в VS функция, позволяющая убрать код из всего ненужного кода, чтобы остался только тот код, который необходим для работы вашего текущего метода?

Речь идет не о библиотеке. Загрузка .sln или .csproj и наличие классов над классами, когда вам нужен только один метод, - это пустая трата производительности, оперативной памяти и пространства. Речь идет о коде, который вы можете легко опустить, или ссылках (то, что я называю библиотеками), которые вы можете легко опустить. Частичный вопрос: какой оператор "using" вам нужен, который необходим только для вашего текущего метода и методов, передающих ему параметры? Короче говоря, показывая только соответствующий код. Код, который привязан друг к другу.

Давайте рассмотрим пример: вы заходите на github и скачиваете исходный код на c #. Давайте назовем решение S. Вы открываете S в Visual Studio. Вы не разбираете, вы просто загружаете исходный код S, который есть в виде простого текста. Затем вы найдете метод M - в виде простого текста - который вы хотите использовать. M содержит несколько объектов, классы которых были определены где-то в проекте. Цель состоит в том, чтобы воссоздать окружение только для этого метода, чтобы скопировать и вставить его в мое собственное решение, не имея подчеркнутых слов красного цвета почти в каждой строке метода

Ответы [ 2 ]

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

Если это всего лишь один метод, посмотрите на исходный код и скопируйте его в свою библиотеку. Обязательно оставьте комментарий, где вы получили код и у кого есть авторские права! Не забудьте включить лицензию, которую вы все равно должны были сделать со ссылкой на библиотеку.

Тем не менее, в настоящее время (официально) невозможно автоматически удалить неиспользованный публичный объявленный код из библиотеки (сборки). Кстати, этот процесс называется Treeshaking. Исключение: .NET Native.

Но .NET Native доступен только для приложений Магазина Windows. Подробнее об этом можно прочитать здесь .

Тем не менее, у нас есть JIT (Just in Time) -компилятор, который действительно умный. Я не буду беспокоиться о коде библиотеки в несколько КБ Потратьте свое время на оптимизацию запросов SQL и других узких мест. Классы загружаются только , когда вы действительно их используете .

Использование некоторых нестабильных решений или поддержка разветвления библиотеки, когда вы используете более одного метода (без документации и опыта, поскольку это ваш собственный разветвление), не стоит головной боли, у вас будет!


Если вы действительно хотите пойти по пути удаления всего, что вам не нужно, вы можете открыть решение, объявить все как internal (поиск и замена - ваш друг) и восстановить открытые части, которые дают вам являются Buildtime error / Runtime error (Отражение). Затем удалите все, что является внутренним. Существует несколько инструментов DesignTime, таких как Resharper, которые могут удалить Dead Code.

Но, как я уже сказал, оно того не стоит!


Для пользователей .NET Core, в 6-8 недель , у нас есть .NET IL Linker , поскольку spender прокомментировал , это выглядит многообещающе. Что это значит? .NET Framework развивается время от времени. Пусть покажут это и посмотрят на вашу производительность.

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

после прочтения вопроса и комментариев, я думаю, у меня есть смутное представление о том, что вы имеете в виду.

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

Есть много из них бесплатно, такие как:

  • dotPeek
  • ILSpy
  • ...

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

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

Надеюсь, это поможет, Удачного кодирования!

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