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

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

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

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

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

Оффлайн avc

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

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

  • Administrator
  • *****
  • Сообщений: 11422
  • Карма: 1478
  • Рыцарь 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
  • ****
  • Сообщений: 373
  • Карма: 63
  • 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
  • *****
  • Сообщений: 555
  • Карма: 112
    • Мои плагины к Автокаду
Re: Оффтопик. Изучаем C#
« Ответ #202 : 31-05-2020, 22:20:15 »
может попробовать Directory.Build.props
Попробовал. Получилось. В самом деле можно переместить все линки на исходники в Directory.Build.props и проект будет компилироваться. И можно создать сколько угодно файлов .targets с такими же ссылками. Только придется в ручную прописать эти таргеты в csproj. Так тоже работает. Но есть один нюанс... обозреватель решений в VS вообще никак не показывает ни файлы с кодом, ни targets... Т.е. можно вообще пустой проект оставить, но он будет компилироваться!! Выглядит как шаманство. Работать с таким проектом невозможно - ни как файл не открыть. Думаю оставить один нормальный проект. Но боюсь потерять контроль, что там компилируется в остальных проектах...
Но насколько тебе это будет удобно использовать - это вопрос.
В таком виде, без поддержки визуальных редакторов VS, - да, удобство под большим вопросом...

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

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