Мне удалось подключить 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» в качестве адреса при сопряжении)





Наконец, я нашел обходной путь, это было так же просто, как изменить порт на порт 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 в порядке, но все же ограничиваю, если это единственный порт, который я могу использовать. В любом случае это работает, поэтому я надеюсь, что это поможет кому-то однажды