Пара Visual Studio для Mac застряла при подключении

Мне удалось подключить Microsoft Visual Studio 2022 ver (17.5.3) к Ventura ver 13.3 Mac OSX, работающей в образе docker с кодами болезни, и у меня никогда не было проблем, пока мне не пришлось переформатировать свой компьютер, с тех пор я немного стена.

Симулятор ISO запускается в Windows, но зависает с сообщением «подключение к Mac…».

Если в VS я отменяю выбор опции «удаленный симулятор для Windows» VS, тогда симулятор ISO запускается на виртуальной машине Mac и загружает приложение VS нормально, но я не хочу работать на Mac, поскольку я приходится перелистывать туда-сюда, что при работе с разработчиками превращается в кошмар хлопот

Когда я просматриваю журналы Xamarin.Simulator, я замечаю следующее:

Startup:
    arguments: --device=EBAB483F-D9AF-XXX-XXXX--mlaunch=/Users/XXX/Library/Caches/Xamarin/XMA/SDKs/dotnet/packs/Microsoft.iOS.Sdk/16.2.1040/tools/bin/mlaunch --launchsim=//Users/XXX/Library/Caches/Xamarin/mtbs/builds/MauiApp1/e42ad46171c3031dfcf0c05e01b82061b90e7c77273501****/bin/Debug/net7.0-ios/iossimulator-x64/MauiApp1.app -argument=-monodevelop-port -argument=56435 -setenv=__XAMARIN_DEBUG_PORT__=56435 --sdkroot=/Applications/Xcode.app -h=172.31.**.** -ssh=XXX
    version: 17.5.0.518 (430be4c76fa1617d1af209951047a425c391d38e)
Connection state changed:
    State: Connecting
SSH Connect:
    target: 172.XX.XXX.XX
Using SSH pass phrase
Warning: Error during connecting
System.Net.Sockets.SocketException (0x80004005): No connection could be made because the target machine actively refused it
   at Renci.SshNet.Abstractions.SocketAbstraction.Connect(IPEndPoint remoteEndpoint, TimeSpan connectTimeout)
   at Renci.SshNet.Session.SocketConnect(String host, Int32 port)
   at Renci.SshNet.Session.Connect()
   at Renci.SshNet.BaseClient.CreateAndConnectSession()
   at Renci.SshNet.BaseClient.Connect()
   at Xamarin.Simulator.Core.Protocol.SshNetworkClientConnection.ConnectSsh(Target target)
   at Xamarin.Simulator.Core.Protocol.SshNetworkClientConnection.ConnectAsync(Target target, MessageTypes messageTypes)
   at Xamarin.Simulator.Core.Protocol.SimulatorClient.ConnectAsync()
   at Xamarin.Simulator.Windows.App.<ConnectAsync>d__16.MoveNext()
Connection state changed:
    State: Disconnected
Exit:
    Exit Code: 0

Таким образом, проблема связана с ssh-соединением, но я могу использовать ssh для подключения к Mac из Windows без проблем, используя powershell

PS C:\Users\x> ssh-add -l
The agent has no identities.
PS C:\Users\x> ssh -p 50922 [email protected].***
The authenticity of host '[172.31.***]:50922 ([172.31.***]:50922)' can't be established.
ED25519 key fingerprint is SHA256:+6********************.
This key is not known by any other names
Are you sure you want to continue connecting (yes/no/[fingerprint])? yes
Warning: Permanently added '[172.31.***]:50922' (ED25519) to the list of known hosts.
([email protected].*** Password:
Last login: 
XXX@Patricks-iMac-Pro ~ % ls
Desktop         Downloads       Movies          Pictures
Documents       Library         Music           Public

Я также могу подключиться с Mac vm к Windows, используя:

ssh -p 22 [email protected]@192.XXX

Глядя на журналы в глубину, я задавался вопросом, был ли порт не установлен должным образом Xamarin

//Пользователи/патрикхьюм/Библиотека/Кэши/Xamarin/mtbs/builds/MauiApp1/e42ad46171c3031dfcf0c05e01b82061b90e7c772735013ee3a8aae95dea2dbe/bin/Debug/net7.0-ios/iossimulator-x64/MauiApp1. приложение -argument=-monodevelop-port -argument=52260 -setenv =XAMARIN_DEBUG_PORT=52260 --sdkroot=/Applications/Xcode.app -h=172.31.XXX -ssh=Патрик Хьюм

однако порт ssh устанавливается при подключении к виртуальной машине как видно из журнала окна терминала VS:

1>------ Build started: Project: MauiApp1, Configuration: Debug Any CPU ------
1>Executing SayHello Task to establish a connection to a Remote Server. 
1>          Properties: 
1>              SessionId=e42ad46171c3031dfcf0c05e01b82061b90e7c772735013ee3a8aae95dea2dbe, 
1>              Addresss=172.XXXX, 
1>              SshPort=50922, 
1>              TcpPort=52443, 
1>              User=****, 
1>              AppName=MauiApp1,
1>              VisualStudioProcessId=38828,
1>              ContinueOnDisconnected=False
1>Detected signing identity:
1>  Bundle Id: com.companyname.mauiapp1
1>  App Id: com.companyname.mauiapp1
1>Skipping analyzers to speed up the build. You can execute 'Build' or 'Rebuild' command to run analyzers.
1>MauiApp1 -> D:\GitHub\MauiApp1\bin\Debug\net7.0-ios\iossimulator-x64\MauiApp1.dll
1>Optimizing assemblies for size may change the behavior of the app. Be sure to test after publishing. See: https://aka.ms/dotnet-illink
......

Я исключил брандмауэр, потому что он отключен на Mac, а в Windows я добавил ssh в качестве исключения:

New-NetFirewallRule -Name sshd -DisplayName 'OpenSSH Server (sshd)' -Enabled True -Direction Inbound -Protocol TCP -Action Allow -LocalPort 22

Даже если я полностью отключу брандмауэр Windows и антивирус, это ничего не изменит.

используя ответ от stackoverflow

Я даже добавил DOCKER_HOST в среду и демон Expose на tcp://localhost:2375 без TLS и использовал netstat -anb, чтобы убедиться, что он работает и прослушивает ожидаемый порт.

другие предложения включают обновление VS или Xcode (или даже его понижение), но у меня раньше работала версия Xcode 14.2, и я использую последнюю версию VS.

Я попытался поиграть с некоторыми настройками конфигурации .wslconfig, такими как:

# Network host settings that enable the DNS server used by WSL 2. This example changes the hostname, sets generateHosts to false, preventing WSL from the default behavior of auto-generating /etc/hosts, and sets generateResolvConf to false, preventing WSL from auto-generating /etc/resolv.conf, so that you can create your own (ie. nameserver 1.1.1.1).
[network]
hostname = DemoHost
generateHosts = false
generateResolvConf = false
# Turn off default connection to bind WSL 2 localhost to Windows localhost
localhostforwarding=true

но это было похоже на отвлекающий маневр, поэтому я вернулся к исходным настройкам конфигурации:

[wsl2]
nestedVirtualization=true

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

так что теперь у меня нет идей, я уверен, что это не проблема с использованием виртуальной машины, Docker или Sickcodes, потому что у меня это работало раньше. Так что, если у кого-нибудь есть, дайте мне знать, пожалуйста?

примечания: в докере по умолчанию установлена ​​интеграция с Ubuntu, а wsl использует Ubuntu в качестве дистрибутива по умолчанию, а я использую WSL 2.

VS может без проблем подключиться к Mac (я использую «172. ***: 50922» в качестве адреса при сопряжении)

Стоит ли изучать PHP в 2026-2027 годах?
Стоит ли изучать PHP в 2026-2027 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Приемы CSS-макетирования - floats и Flexbox
Приемы CSS-макетирования - floats и Flexbox
Здравствуйте, друзья-студенты! Готовы совершенствовать свои навыки веб-дизайна? Сегодня в нашем путешествии мы рассмотрим приемы CSS-верстки - в...
Тестирование функциональных ngrx-эффектов в Angular 16 с помощью Jest
В системе управления состояниями ngrx, совместимой с Angular 16, появились функциональные эффекты. Это здорово и делает код определенно легче для...
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
0
0
77
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Наконец, я нашел обходной путь, это было так же просто, как изменить порт на порт 22, я смог решить это, когда я посмотрел журнал Xamarin для VMware, который работает, я заметил, что используется порт 22, поэтому, когда я настроил свой docker mac VM для запуска или порт 22 вот так

docker run -it \
    --device /dev/kvm \
    -e RAM=8 \
    -p 22:10022 \
    -v /tmp/.X11-unix:/tmp/.X11-unix \
    -e "DISPLAY=${DISPLAY:-:0.0}" \
    -e GENERATE_UNIQUE=true \
    -e MASTER_PLIST_URL='https://raw.githubusercontent.com/sickcodes/osx-serial-generator/master/config-custom.plist' \
    sickcodes/docker-osx:ventura

Симулятор ISO работает в Windows нормально, не уверен, почему использование другого порта вызывает проблему, я бы понял, если бы это была проблема с брандмауэром, но я исключил это, поэтому, возможно, соединение ssh с Mac на Windows должно быть через порт 22, что кажется вряд ли. Учитывая, что раньше у меня не было этой проблемы, я могу только предположить, что, возможно, на моей машине есть какая-то конфигурация, которая отличается от формата записи по сравнению с предварительным форматом, возможно, в результате обновления Windows, VS, Xcode или MAC. Я хотел бы когда-нибудь поработать, так как использование порта 22 в порядке, но все же ограничиваю, если это единственный порт, который я могу использовать. В любом случае это работает, поэтому я надеюсь, что это поможет кому-то однажды

Другие вопросы по теме