Оффтопик. Изучаем C#

Автор Тема: Оффтопик. Изучаем C#  (Прочитано 100724 раз)

0 Пользователей и 2 Гостей просматривают эту тему.

Оффлайн Дмитрий Загорулькин

  • ADN
  • *
  • Сообщений: 2462
  • Карма: 692
  • LISP/C#, AutoCAD/Civil 3D
  • Skype: zagor_dmtr
Re: Оффтопик. Изучаем C#
« Ответ #195 : 26-03-2019, 13:09:57 »
Насколько я знаю, у него есть свой API. Может в нём есть нужные инструменты?

Оффлайн simson43

  • ADN OPEN
  • ****
  • Сообщений: 411
  • Карма: 9
Re: Оффтопик. Изучаем C#
« Ответ #196 : 26-03-2019, 13:20:01 »
через него я и получил Stream
а вот аналога FileSystemWatcher не нашел(

Оффлайн simson43

  • ADN OPEN
  • ****
  • Сообщений: 411
  • Карма: 9
Re: Оффтопик. Изучаем C#
« Ответ #197 : 26-03-2019, 16:09:14 »
до этого я считывал асинхронно
Код - C# [Выбрать]
  1. await locStream.ReadAsync(locBytes, 0, length);
а если же считывать синхронно побайтно
Код - C# [Выбрать]
  1.  while (true)
  2.             {
  3.                 int lVal = locStream.ReadByte();
  4.                 int sVal = spStream.ReadByte();
  5.  
  6.                 if (lVal == -1 && sVal == -1)
  7.                     return true;
  8.  
  9.                 if ( lVal != sVal)
  10.                     return false;
  11.             }
То такой ситуации не возникает. И одинаковость файлов определяется корректно.

Оффлайн Александр Ривилис

  • Administrator
  • *****
  • Сообщений: 13067
  • Карма: 1685
  • Рыцарь ObjectARX
  • Skype: rivilis
Re: Оффтопик. Изучаем C#
« Ответ #198 : 26-03-2019, 16:20:29 »
То такой ситуации не возникает. И одинаковость файлов определяется корректно.
Ну видимо для этого потока асинхронное считывание недопустимо...
Не забывайте про правильное Форматирование кода на форуме
Создание и добавление Autodesk Screencast видео в сообщение на форуме
Если Вы задали вопрос и на форуме появился правильный ответ, то не забудьте про кнопку Решение

Оффлайн avc

  • ADN Club
  • *****
  • Сообщений: 735
  • Карма: 149
    • Мои плагины к Автокаду
Re: Оффтопик. Изучаем C#
« Ответ #199 : 29-05-2020, 19:39:12 »
Такой вопрос: нельзя ли как-то в Visual Studio скомпилировать одну dll из двух проектов?
Или сделать общую папку кода для нескольких проектов?
Поясню зачем мне это. У меня пачка плагинов и в итоге 48 проектов в решении. Когда добавляю еще один файл кода общего назначения, то приходится делать ссылку на него в каждом проекте вручную. Очень утомляет. Хочу добавлять файл в одно место, в один проект или папку и чтоб он таким образом добавился во все проекты.
Выделить общий код в отдельную dll - не вариант по многим причинам, нужна единая dll для каждого плагина.
Догадываюсь, что так не получится....

Оффлайн Александр Ривилис

  • Administrator
  • *****
  • Сообщений: 13067
  • Карма: 1685
  • Рыцарь ObjectARX
  • Skype: rivilis
Re: Оффтопик. Изучаем C#
« Ответ #200 : 29-05-2020, 19:51:27 »
avc,
Похоже, что ближе всего к тому, что ты хочешь вот это: https://docs.microsoft.com/en-us/visualstudio/msbuild/how-to-use-the-same-target-in-multiple-project-files?view=vs-2019
Но насколько тебе это будет удобно использовать - это вопрос.
Не забывайте про правильное Форматирование кода на форуме
Создание и добавление Autodesk Screencast видео в сообщение на форуме
Если Вы задали вопрос и на форуме появился правильный ответ, то не забудьте про кнопку Решение

Оффлайн Вильдар

  • ADN Club
  • ****
  • Сообщений: 395
  • Карма: 69
  • Skype: vildar82
Re: Оффтопик. Изучаем C#
« Ответ #201 : 29-05-2020, 22:55:00 »
avc,
https://docs.microsoft.com/ru-ru/visualstudio/msbuild/customize-your-build?view=vs-2019
может попробовать Directory.Build.props, в котором указать папку для компиляции всех файлов в ней. я не пробовал так. но может можно.
Если я правильно понял, нужно добавить cs файл во все проекты в решении. По идее может срабоать.
Т.е. выделить общую папку для общих cs файлов для всего решения и загнать их через файл Directory.Build.props.
Щас я даже попробую

Вот так по одному файлу работает - ссылкой добавляется во все проекты.
Но, наверно, можно как то папку указать и все файлы *.cs оттуда.
Код - XML [Выбрать]
  1. <Project>  
  2.   <ItemGroup>
  3.     <Compile Include="$(SolutionDir)\Common\Data.cs">
  4.       <Link>Data.cs</Link>
  5.     </Compile>
  6.   </ItemGroup>
  7. </Project>

Оффлайн avc

  • ADN Club
  • *****
  • Сообщений: 735
  • Карма: 149
    • Мои плагины к Автокаду
Re: Оффтопик. Изучаем C#
« Ответ #202 : 31-05-2020, 22:20:15 »
может попробовать Directory.Build.props
Попробовал. Получилось. В самом деле можно переместить все линки на исходники в Directory.Build.props и проект будет компилироваться. И можно создать сколько угодно файлов .targets с такими же ссылками. Только придется в ручную прописать эти таргеты в csproj. Так тоже работает. Но есть один нюанс... обозреватель решений в VS вообще никак не показывает ни файлы с кодом, ни targets... Т.е. можно вообще пустой проект оставить, но он будет компилироваться!! Выглядит как шаманство. Работать с таким проектом невозможно - ни как файл не открыть. Думаю оставить один нормальный проект. Но боюсь потерять контроль, что там компилируется в остальных проектах...
Но насколько тебе это будет удобно использовать - это вопрос.
В таком виде, без поддержки визуальных редакторов VS, - да, удобство под большим вопросом...

Оффлайн Дмитрий Загорулькин

  • ADN
  • *
  • Сообщений: 2462
  • Карма: 692
  • LISP/C#, AutoCAD/Civil 3D
  • Skype: zagor_dmtr
Re: Оффтопик. Изучаем C#
« Ответ #203 : 06-06-2020, 10:28:14 »
Ссылки на cs файлы хранятся в файлах csproj. Можно программно пробежаться по папкам решения, найти нужные csproj, открыть, внести нужные данные о ссылочных файлах. Как вариант - консольное приложение с конфиг-файлом настроек.
Я как-то написал похожий "ленивчик", только на WPF, для автоматизации рутины при сборке. Пару дней на написание потратил и уже года два пользуюсь. Запустил, проверил настройки, выбрал галочками нужные решения. Далее приложение пробегает по файлам, генерирует и выставляет номер версии и ProductCode новые, собирает инсталляторы и пушит изменения в репозиторий гит.

Оффлайн avc

  • ADN Club
  • *****
  • Сообщений: 735
  • Карма: 149
    • Мои плагины к Автокаду
Re: Оффтопик. Изучаем C#
« Ответ #204 : 06-06-2020, 11:20:10 »
Можно программно пробежаться по папкам решения
Да можно и не программно - Notepad++ прекрасно подменяет текст в любом количестве файлов заданного типа. В случаях переименования я только так и делаю. Но я искал более удобные встроенные возможности самой VS. И они даже нашлись, вот только реализация... не очень.

Оффлайн avc

  • ADN Club
  • *****
  • Сообщений: 735
  • Карма: 149
    • Мои плагины к Автокаду
Re: Оффтопик. Изучаем C#
« Ответ #205 : 19-08-2020, 11:36:37 »
Подскажите пожалуйста, во время отладки плагинов над Автокадом появляется вот такая раздражающая менюшка:

Похоже, что это отладчик VS рисует. Но ни одна кнопка не работает и ни на что не влияет. Что это такое? Как отключить? Или еще лучше - как использовать для дела?

Оффлайн Александр Ривилис

  • Administrator
  • *****
  • Сообщений: 13067
  • Карма: 1685
  • Рыцарь ObjectARX
  • Skype: rivilis
Re: Оффтопик. Изучаем C#
« Ответ #206 : 19-08-2020, 11:45:45 »
Тоже обратил внимание, на появление такой менюшки. Кажется она появилась с VS 2017, и в предыдущих версиях её не было (возможно при каком-то из обновлений). Не пользуюсь и стараюсь не обращать внимание.
Не забывайте про правильное Форматирование кода на форуме
Создание и добавление Autodesk Screencast видео в сообщение на форуме
Если Вы задали вопрос и на форуме появился правильный ответ, то не забудьте про кнопку Решение

Оффлайн Вильдар

  • ADN Club
  • ****
  • Сообщений: 395
  • Карма: 69
  • Skype: vildar82
Re: Оффтопик. Изучаем C#
« Ответ #207 : 19-08-2020, 11:48:33 »
Это настраивается в опциях отладки в VS:


Смысл иногда есть - на элементы окна потыкать.
Удобно изменение разметки во время отладки.
Редко пользуюсь.

Оффлайн avc

  • ADN Club
  • *****
  • Сообщений: 735
  • Карма: 149
    • Мои плагины к Автокаду
Re: Оффтопик. Изучаем C#
« Ответ #208 : 19-08-2020, 12:00:32 »
Сейчас сам дошел: нажал одну из кнопок, студия показала какую-то незнакомую панель а в ней что-то про XAML. По этому слову нашел настройку. В русской студии кнопка отключения выглядит так:

Почитал в Wiki про этот XAML - похоже это другое название для форм WPF. Да? Тогда понятно почему оно ни как не работает ни в Автокад, ни в моих панельках WinForms...

Оффлайн trir

  • ADN Club
  • ****
  • Сообщений: 415
  • Карма: 56
Re: Оффтопик. Изучаем C#
« Ответ #209 : 19-08-2020, 12:13:16 »
Цитировать
Почитал в Wiki про этот XAML - похоже это другое название для форм WPF.
не совсем, у WinForms есть .Designer.cs - где находится код генерации формы, его можно править ручками, но так как он автогенерируется - лучше этого не делать
XAML выполняет ту же роль, но только редактирование WPF подразумевает в первую очередь редактирование XAML   
XAML более читаемый, чем .Designer.cs. А ещё с ним удобно делать copy/past