148 votes

Référencement de system.management.automation.dll dans Visual Studio

Je commence à m'intéresser au modèle PowerShell et au développement de snap-in. La première chose que je remarque est de faire référence à System.management.automation.dll. Cependant, dans Visual Studio, l'onglet .NET ne contient pas cet assemblage, et il n'est pas possible de naviguer jusqu'à

C:\windows\assembly\GAC_MSIL\System.Management.Automation\1.0.0.0__31bf3856ad364e35\System.Management.Automation.dll

pour faire une référence à un fichier.

Suis-je obligé de copier le fichier manuellement pour avoir une référence facile ? ?

0 votes

Pourriez-vous envisager de modifier la réponse acceptée pour celle-ci ? L'approche du paquet NuGet semble être la plus simple et la plus robuste.

181voto

skfd Points 463

System.Management.Automation sur Nuget

System.Management.Automation.dll sur NuGet , paquet plus récent de 2015, pas non répertorié comme le précédent !

Paquets de l'équipe Microsoft PowerShell sous NuGet

Mise à jour : est maintenant la propriété de l'équipe PowerShell. Hourra !

3 votes

Cela mérite plus d'attention.

5 votes

J'aimerais que Microsoft s'approprie ce Nuget puisqu'ils sont si peu ouverts de nos jours.

0 votes

@skfd Microsoft possède déjà Nuget Les personnes qui en sont à l'origine utilisent les adresses électroniques microsoft.com et NuGet lui-même fait partie de la fondation .NET de Microsoft ( dotnetfoundation.org )

97voto

tomasr Points 9990

Une copie de System.Management.Automation.dll est installée lorsque vous installez le SDK Windows (une version appropriée et récente de celui-ci, en tout cas). Elle doit se trouver dans C:\Program Fichiers \Reference Assemblages \Microsoft\WindowsPowerShell\v1.0\

2 votes

J'ai installé le SDK sur 2 machines 64-bit différentes (avec difficulté) et j'ai trouvé la version 6.2.8229.0, 4.66MB dll sur seulement 1, et seulement dans c : \program fichiers (x86) \reference assemblages \microsoft\windowspowershell\v1.0. Je vous recommande vivement de modifier le fichier .csproj, ou d'enregistrer la bonne DLL dans le contrôle de la source et de la référencer. L'installation du SDK est tout simplement trop inflexible.

0 votes

@ashes999 PowerShell 2.0 fonctionne en fait sur la DLL 1.0.

4 votes

2014.07.11 sur x64 son en C:\Program Fichiers (x86) \Reference Assemblages \Microsoft\WindowsPowerShell\3.0\System.Management .Automation.dll

95voto

kravits88 Points 1307

Si vous ne voulez pas installer le SDK de Windows, vous pouvez obtenir la dll en exécutant la commande suivante dans powershell :

Copy ([PSObject].Assembly.Location) C:\

3 votes

Très doux. Je n'y aurais pas pensé.

0 votes

Merci pour cela. Le paquet NuGet ne fonctionnait pas pour moi dans une toute nouvelle application console .NET 4.5.2. Il a "installé" le paquet, mais a refusé d'ajouter la référence. J'ai finalement arrêté de me battre avec NuGet et j'ai utilisé votre réponse pour ajouter la référence manuellement. Merci !

93voto

JP. Points 597

Je n'ai pas réussi à installer correctement le SDK (certains fichiers semblaient non signés, quelque chose comme ça). J'ai trouvé une autre solution aquí et cela semble fonctionner correctement pour moi. Il ne nécessite pas du tout l'installation de nouveaux fichiers. En gros, ce que vous faites est :

Modifiez le fichier .csproj dans un éditeur de texte, et ajoutez :

<Reference Include="System.Management.Automation" />

à la section correspondante.

J'espère que cela vous aidera.

2 votes

Il me semble étrange que nous devions le faire manuellement (en modifiant le fichier .csproj) mais cela a fonctionné pour moi.

0 votes

En éditant le fichier du projet, on le force à charger la version du GAC (qui est la version V2) au lieu du système de fichiers (qui est la version V1).

1 votes

Cela peut entraîner des problèmes lorsque l'application est déployée sur le serveur, car l'assemblage peut ne pas y être trouvé.

10voto

pradeep Points 31

S'il s'agit de 64 bits - C:\Program Fichiers (x86) \Reference Assemblages \Microsoft\WindowsPowerShell **3.0**

et la version pourrait être différente

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X