这可能是一个时间敏感的问题(现在是 06/2019,我希望 VS2019 在测试版结束时更新以支持 Xcode11)但我想继续使用 Xcode 10.2 和 Visual Studio 2019 的相关工具Mac 同时探索 Xcode 11b 的一些新功能。运行 Xcode 11b 会导致安装相关的命令行工具,并且 10.2 模拟器停止工作。同样,遵循此处概述的解决方法会导致 11b 模拟器无法启动。
有没有办法让 Visual Studio 和 Xcode 11b 同时运行?
这可能是一个时间敏感的问题(现在是 06/2019,我希望 VS2019 在测试版结束时更新以支持 Xcode11)但我想继续使用 Xcode 10.2 和 Visual Studio 2019 的相关工具Mac 同时探索 Xcode 11b 的一些新功能。运行 Xcode 11b 会导致安装相关的命令行工具,并且 10.2 模拟器停止工作。同样,遵循此处概述的解决方法会导致 11b 模拟器无法启动。
有没有办法让 Visual Studio 和 Xcode 11b 同时运行?
对于那些想要基于 GUI 的解决方案的人:
https://docs.microsoft.com/en-us/xamarin/ios/troubleshooting/questions/ios-sdk。请参阅此链接以了解如何设置/指向 iOS SDK/您喜欢在 Visual Studio for Windows 和 Mac 中使用的另一个 xCode 版本。
这可以在 Visual Studio 中设置如下
Visual Studio 工具 -> 选项 -> Xamarin -> iOS 设置
Visual Studio for Mac -> 首选项 -> 项目 -> SDK 位置 -> iOS
至少可以在它们之间切换,尽管这有点像蛮力方法。以下脚本可能有一个轻触版本,这不是 Bash-foo 中的练习。像往常一样将它保存在某个地方(我将switchXcode.sh
在下面使用)并使其可执行。
退出任何 Xcode/VS2019 并运行它:
./switchXcode.sh [--useold|--usenew] [--old </PATH/TO/OLD/XCODE.app>] [--new <PATH/TO/NEW/XCODE.app>]
其中--useold
/--usenew
应该是显而易见的,--old
并且--new
允许您覆盖 Xcode 的 /my 默认位置。
运行需要几分钟。
#!/bin/bash
# Script to swap between Xcode production and beta versions
# Ask for root privilege
[ "$UID" -eq 0 ] || exec sudo "$0" "$@"
# Adjust to suit, or override with args
OLD_XCODE=/Applications/Xcode.app
NEW_XCODE=/Applications/Xcode-beta.app
USE=NONE
# Parse command line args
POSITIONAL=()
while [[ $# -gt 0 ]]
do
key="$1"
case $key in
--old)
OLD_XCODE="$2"
shift; shift
;;
--new)
NEW_XCODE="$2"
shift; shift
;;
--useold)
USE=OLD
shift
;;
--usenew)
USE=NEW
shift
;;
*)
echo "Unknown argument"
exit 1
;;
esac
done
# Validate inputs
[ ! -d "$OLD_XCODE" ] && echo "'old' Xcode directory '$OLD_XCODE' does not exist; exiting." && exit 1
[ ! -d "$NEW_XCODE" ] && echo "'new' Xcode directory '$NEW_XCODE' does not exist; exiting." && exit 1
# Switch to correct Xcode
case "$USE" in
"OLD")
echo "Switching to 'old' Xcode ($OLD_XCODE)"
sudo xcode-select -s $NEW_XCODE/Contents/Developer/ &&\
sudo $NEW_XCODE/Contents/Developer/usr/bin/xcodebuild -runFirstLaunch &&\
sudo rm -Rf /Library/Developer/PrivateFrameworks/CoreSimulator.framework/Versions/* &&\
sudo xcode-select -s $OLD_XCODE/Contents/Developer/ &&\
sudo $( for pkg in $OLD_XCODE/Contents/Resources/Packages/*.pkg; do sudo installer -pkg "$pkg" -target /; done ) &&\
sudo $OLD_XCODE/Contents/Developer/usr/bin/xcodebuild -runFirstLaunch
;;
"NEW")
echo "Switching to 'new' Xcode ($NEW_XCODE)"
sudo xcode-select -s $OLD_XCODE/Contents/Developer/ &&\
sudo $OLD_XCODE/Contents/Developer/usr/bin/xcodebuild -runFirstLaunch &&\
sudo rm -Rf /Library/Developer/PrivateFrameworks/CoreSimulator.framework/Versions/* &&\
sudo xcode-select -s $NEW_XCODE/Contents/Developer/ &&\
sudo $( for pkg in $NEW_XCODE/Contents/Resources/Packages/*.pkg; do sudo installer -pkg "$pkg" -target /; done ) &&\
sudo $NEW_XCODE/Contents/Developer/usr/bin/xcodebuild -runFirstLaunch
;;
*)
echo "NO XCODE SPECIFIED"
exit 1
;;
esac
echo "Done."