Comment puis-je lancer plusieurs instances de MonoDevelop sur Mac?

121

Je voudrais ouvrir une nouvelle instance MonoDevelop pour travailler sur un autre projet sur Mac, et le système d'exploitation m'empêche actuellement d'ouvrir une nouvelle instance.

miguel.de.icaza
la source

Réponses:

173

Sur Mac, si vous avez une application ouverte et que vous essayez de la lancer à nouveau, le Mac bascule simplement vers l'application ouverte. Vous pouvez le forcer à ouvrir une nouvelle instance en passant l'option "-n" au lanceur. Dans un terminal, exécutez

open -n /Applications/MonoDevelop.app

Notez également que MonoDevelop est capable d'ouvrir plusieurs solutions. Pour ce faire, décochez simplement la case "Fermer la solution actuelle" dans la boîte de dialogue "Ouvrir", ou maintenez la touche Contrôle enfoncée en cliquant sur l'un des projets récemment ouverts dans la page d'accueil.

EDIT: Pour Xamarin Studio, qui a remplacé MonoDevelop sur Mac, la commande est

open -n /Applications/Xamarin\ Studio.app

MODIFIER 2:

Pour Visual Studio pour Mac, qui a remplacé Xamarin Studio, la commande est

open -n /Applications/Visual\ Studio.app
Mikayla Hutchinson
la source
2
Salut - J'exécute MonoDevelop 2.4 sur Mac OS, et je ne vois pas cette case à cocher, ni ce comportement de touche de contrôle. Cela a-t-il changé récemment?
David Moles
2
Fonctionne toujours pour moi. Notez que la case à cocher et le conseil dans la page d'accueil n'apparaissent que si vous avez déjà une solution ouverte, et la case à cocher n'apparaît que lorsque vous sélectionnez réellement une solution ou un projet dans la boîte de dialogue.
Mikayla Hutchinson
Mettez à jour le libellé de la case à cocher au cas où quelqu'un trouverait cela, il dit maintenant "Fermer l'espace de travail actuel"
Tiago
FYI - si vous utilisez cette méthode, les solutions supplémentaires sont toutes ouvertes dans la même fenêtre monodevelop ... ce n'est pas du tout ce que j'attendais de l'utilisation de VS / MD sur Windows. Apparemment, nous devons recourir aux méthodes ci-dessous pour obtenir des fenêtres séparées pour des solutions séparées.
David Jeske
2
Fonctionne toujours dans Xamarin Studio, même si je soupçonne toujours que Miguel a lancé une open -n /Applications/Xamarin\ Studio.app/
balle molle:;
40

Utiliser le shell pour entrer la commande comme d'autres l'ont décrit pour lancer une instance supplémentaire est bien, mais je préfère avoir une icône sur le dock sur laquelle je peux simplement cliquer.

C'est facile à faire:

  1. Ouvrez AppleScript Editor et entrez ce qui suit:

    do shell script "open -n /Applications/MonoDevelop.app/"

  2. Enregistrez avec un nom tel que "MonoDevelop Launcher" et assurez-vous de spécifier Application pour le format de fichier.

  3. Faites glisser l'icône sur votre dock.

  4. Assurez-vous de consulter le commentaire de Bright ci-dessous sur le remplacement de l'icône générique par MonoDevelop.

Cliquez à plusieurs reprises pour profiter du grooviness de plusieurs instances de MonoDevelop.

Subfuzion
la source
1
Le meilleur des deux autres réponses combinées
BlackTigerX
10
Pour remplacer l'icône du lanceur de script par l'icône MonoDevelop, vous pouvez ouvrir le contenu du package et remplacer le fichier applet.icns par l'icône monodevelop (du contenu du package MonoDevelop.) N'oubliez pas de renommer le fichier en applet.icns après l'avoir copié .
lumineux
1
Parfait! Merci Subfuzion, et merci à Bright pour le conseil de remplacement d'icône.
Leigh Bowers
Bon conseil de Bright sur le changement d'icône. Voir également la réponse ci-dessous de Glinkot et le commentaire de Luke concernant la gestion de l'espace dans Xamarin Studio, qui remplace MonoDevelop.
Subfuzion
13

Pour plus de commodité, je viens de créer trois copies de MonoDevelop.

Mettez en surbrillance MonoDevelop dans le Finder, copiez, collez, renommez la nouvelle copie en «MonoDevelop-2» et répétez à votre satisfaction.

Cela m'aide également à suivre ce qui se passe dans différents cas. Je garde généralement mon projet le plus important ouvert dans "MonoDevelop", j'utilise "MonoDevelop-2" pour tester des idées liées à mon projet principal et "MonoDevelop-3" pour un scratch aléatoire.

Lorsque vous alt-tab (open-Apple-tab (command-tab (whvr))), le nom de l'exécutable apparaît sous son icône dans la liste des applications, donc, tant que je m'en tiens à ma convention, je sais toujours (ish) le contenu de l'instance sur laquelle je suis en alternance, quel que soit le nombre d'autres fenêtres d'application que j'ai ouvertes. Je n'ai pas besoin de les parcourir pour comprendre.

Ce n'est pas parfait - lorsque "MonoDevelop" est en cours d'exécution, si j'essaye de lancer l'un des autres, la première tentative de démarrage échouera. Essayez simplement de le rallumer - cela fonctionne la deuxième fois. Cela ne se produit que depuis la version la plus récente, et je pense que cela pourrait avoir quelque chose à voir avec les mises à jour automatiques ou la gestion des compléments. Je n'ai pas trop étudié la question. Puisqu'il n'y a aucun problème une fois opérationnel, je ne m'inquiète pas :)

Le résultat est que, avec la méthode start-it-double, pour toute instance supplémentaire de MonoDevelop que vous souhaitez démarrer, vous finissez par devoir quadruple-cliquer au lieu de double-cliquer. Ajoute environ quinze secondes au processus, et comme MonoDevelop (avec «MonoDevelop-1» et «MonoDevelop-2») fonctionne tout le temps, cela représente peut - être trente secondes supplémentaires de travail chaque semaine. Un commerce équitable pour la commodité, me semble-t-il.

Un peu hacky, mais ça a bien fonctionné pour moi.

Et tous les enfants cool le font.

Rory Blyth
la source
1
Bonne idée! Cela fonctionne-t-il toujours si vous créez un lien symbolique au lieu de copier?
Mikayla Hutchinson
1
Les échecs de démarrage sont un bogue connu dans la nouvelle analyse du registre du complément. Lorsque MD détecte que ses DLL ont changé ou "déplacé", il reconstruit le registre du complément, et parfois il se bloque après cela. Il existe une variable d'environnement que vous pouvez définir pour lui faire utiliser un emplacement de registre différent, que vous pouvez utiliser pour séparer les registres de vos trois instances, bien que je ne sache pas comment vous définiriez les variables d'environnement par application sur mac. Il pourrait être nécessaire de le patcher dans le script MonoDevelop.app/Contents/macOS/MonoDevelop.
Mikayla Hutchinson
Je n'ai rien essayé d'autre que de copier, bien que votre idée ait beaucoup plus de sens - je n'aurais pas à dupliquer les efforts lors de la capture des dernières versions de MonoDevelop. Quand je fais des choses comme ça (créer des solutions sales pour moi-même), j'ai tendance à prendre la voie la plus paresseuse pour satisfaire mes manières nerd-lusty. Mais maintenant je veux savoir. Bien sûr, j'aurais pu le faire en beaucoup moins de temps qu'il ne m'en a fallu pour écrire ce commentaire ... Cela va à l'encontre du but de ma paresse. Je dois y aller. Je dois aller essayer ...
Rory Blyth
Je ne sais pas pourquoi j'ai attendu si longtemps pour répondre à cela - j'ai essayé de créer un lien symbolique dès que j'ai écrit le commentaire ci-dessus - n'a pas fonctionné: | OS X n'a ​​pas été dupe. Donc je fais toujours mon truc de copie. Mais bon, ça marche. J'ai pensé à quelques façons de l'automatiser et de transmettre des informations plus significatives que simplement -2, -3, etc. dans le nom de fichier pour la tabulation de commandes dans les applications, mais je n'ai pas encore atteint le seuil Besoin> Paresse qui invite moi pour construire mes outils :)
Rory Blyth
6

--XAMARIN STUDIO--

En février 2013, Monodevelop s'appelle Xamarin Studio, et le fait qu'il contient un espace signifie que ce qui précède ne fonctionne pas. Quelques manipulations plus tard, j'ai trouvé que vous devez imbriquer deux types de citations et que ce qui suit fonctionnera dans applescript:

do shell script "open -n '/Applications/Xamarin Studio.app/'"

Prendre plaisir

Glinkot
la source
5
Cela fonctionne, il vous suffit d'échapper à l'espace, par exempleopen -n /Applications/Xamarin\ Studio.app
Luc
Un autre conseil, vous devez également échapper à la barre oblique inverse dans le script, commedo shell script "open -n /Applications/Xamarin\\ Studio.app/"
Mick Byrne
6

Vous pouvez également utiliser une version plus courte:

Open -n -a "Xamarin Studio.app"

Edit : Pour Visual Studio pour Mac et / ou plus court, la commande est

Open -n -a "Visual Studio"
Denis Gordin
la source
3

Si vous êtes d'accord pour ouvrir deux solutions dans une instance de Xamarin Studio, vous pouvez le faire en accédant à «Fichier» -> «Solutions récentes», puis en appuyant sur Ctrl + clic sur l'autre solution. Cela ouvre les deux solutions dans la même instance de Xamarin studio.

Willem
la source
3

Vous pouvez consulter cette application par redth (maintenant un employé de Xamarin) qui a créé un Xamarin Studio Launcher: http://redth.codes/Xamarin-Studio-Launcher-v3/ . Il n'y a pas de code à publier puisqu'il s'agit d'une application. Mais la bonne chose est qu'il est emballé dans un .dmg pour vous. Cela fonctionne même avec les fichiers .sln. Lien direct vers le téléchargement de la v4 (12 janvier 2015): http://redth.codes/assets/Xamarin.Studio.Launcher.v4.zip .

valdetero
la source
1

Modifiez votre ~ / .bashrc ou ~ / .zshrc et configurez le raccourci suivant:

alias xam = 'open -n /Applications/Xamarin\ Studio.app'

Utilisez comme suit à partir de la CLI:

xam ReactiveUI.sln
Geoffrey Huntley
la source
1

Un autre moyen le plus simple ...

Ouvrez simplement le terminal Faites glisser l'application Xamarin Studio à partir de l'application, elle prendra le chemin comme /Applications/Xamarin\ Studio.app et écrivez le -n ouvert avant le/Applications/Xamarin\ Studio.app

Maintenant, la commande complète est comme open -n /Applications/Xamarin\ Studio.app

Pritish
la source
0

Ouvrez simplement la commande d'écriture du terminal ou ci-dessous, vous pouvez modifier le numéro de nom de l'instance, par exemple (/ Xamarin \ Studio1), c'est ouvrir un autre Xamarin Studio, par exemple (/ Xamarin \ Studio1)

$ open -na /Applications/Xamarin\ Studio.app --args -DataPath /Users/$(whoami)/Library/Application\ Support/Xamarin\ Studio1

En utilisant ci-dessus, vous pouvez créer l'une des instances multiples .app.

Patel Pankaj
la source