2016-10-05 3 views
0

Ich habe in PowerShell enums unten erstellt. Wenn ich jedoch einen Punkt im Namen der Aufzählung (z. B. "Name.A") habe, würde Add-Type einen Fehler zurückgeben. Wie gehe ich vor? Ich möchte den Punkt nicht aus "Name.A" entfernen. HierPowerShell: Punkt in Aufzählungsname verursacht Add-Type zum Fehlschlagen

$TypeEnum = " 
    namespace Types { 
     public enum Id { 
      Name.A = 1, 
      NameB = 2, 
      NameC = 3 
     } 
    }" 

Add-Type -TypeDefinition $TypeEnum -Language CSharpVersion3 

([Types.Id]::'Name.A').value__ 

ist der Fehler, die ich bekomme:

Add-Type: c: \ Benutzer \ User1 \ AppData \ Local \ Temp \ ab0z5i1y.0.cs (4):} erwartet c: \ Benutzer \ Benutzer1 \ AppData \ Local \ Temp \ ab0z5i1y.0.cs (3):
Öffentliche Enumerations-ID {c: \ Benutzer \ Benutzer1 \ AppData \ Local \ Temp \ ab0z5i1y.0.cs (4) : >>> Name.A = 1, c: \ Benutzer \ Benutzer1 \ AppData \ Lokal \ Temp \ ab0z5i1y.0.cs (5):
NameB = 2, In Zeile: 10 Zeichen: 1 + Hinzufügen- Geben Sie -TypeDefinition $ Ty ein peEnum -Sprache CSharpVersion3 + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ ~~~~~~~~~~~~~ + CategoryInfo: InvalidData: (c: \ Benutzer \ Benutzer1 ... 513:} erwartet: CompilerError) [Add-Type], Ausnahme + FullyQualifiedErrorId: SOURCE_CODE_ERROR , Microsoft.PowerShell.Commands.AddTypeCommand
Hinzufügen-Typ: c: \ Benutzer \ Benutzer1 \ AppData \ Local \ Temp \ ab0z5i1y.0.cs (8): Geben Sie oder Namespace-Definition oder Ende der Datei erwartet c: \ Benutzer \ User1 \ AppData \ Local \ Temp \ ab0z5i1y.0.cs (7): }
c: \ Benutzer \ User1 \ AppData \ Local \ Temp \ ab0z5i1y.0.cs (8): >>> } Bei Zeile: 10 Zeichen: 1 + Add-Type -TypeDefinition $ TypeEnum -Sprache CSharpVersion3 + ~~~~~~~~~~~~~~~~~ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + CategoryInfo: InvalidData: (c : \ Benutzer \ Benutzer1 ... f-Datei erwartet: CompilerError) [Add-Type], Ausnahme + FullyQualifiedErrorId: SOURCE_CODE_ERROR, Microsoft.PowerShell.Commands.AddTypeCommand
Add-Type: Typ kann nicht hinzugefügt werden. Es gab Kompilierungsfehler. In Zeile: 10 char: 1 + Add-Type -TypeDefinition $ TypeEnum -Sprache CSharpVersion3 + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + CategoryInfo: invalidData: (:) [Add-Type], InvalidOperationException + FullyQualifiedErrorId : COMPILER_ERRORS, Microsoft.PowerShell.Commands.AddTypeCommand kann nicht finden Typ [Types.Id]: wird geladen stellen Sie sicher, dass die Montage dieses Typ enthält. In Zeile: 12 Zeichen:. 1 + ([Types.Id] :: 'Name.A') value__ + ~~~~~~~~~~~~~~~~~~~~~~~ ~~~~~~~ + CategoryInfo: InvalidOperation: (Types.Id:TypeName) [], Runtime + FullyQualifiedErrorId: TypeNotFound

+1

Das ist nicht gültig C#. –

+0

Kannst du bitte etwas ausarbeiten wie in was geändert werden muss usw.? – TDN

+4

C# nicht zulassen, dass der Punkt Teil des Bezeichners ist. – PetSerAl

Antwort

1

Dies ist eine Beschränkung der Net ist, und durch Erweiterung Power und C#. Enum-Elementnamen dürfen keine Interpunktion enthalten.

Also die kurze Antwort ist, können Sie diese Arbeit nicht machen, ohne etwas hacky zu tun (Sie müssten name.A ändern, um [CharacterCode] A zu benennen oder eine Beschreibung hinzufügen, oder eine andere seltsame Sache, die Sie wirklich sollten t t)

Verwandte Themen