So lösen Sie die Compiler-Warnung "Ressourcenname ist keine gültige ID"

8
___ answer2274144 ___

Stark typisiert bedeutet, dass eine Variable, ein Feld oder eine Eigenschaft einem bestimmten Typ entspricht und nicht nur %code% .

%Vor%

Wenn Sie stark typisierte Ressourcen verwenden, wird Code mit stark typisierten Eigenschaften für alle Ihre Ressourcen generiert. In diesem Fall wird der Ressourcenname als Eigenschaftsname verwendet, daher muss es ein gültiger C # -Eigenschaftsname sein. Ihr Beispiel %code% enthält einen Punkt und ist daher kein gültiger Eigenschaftenname. Der Code-Generator wird den Punkt durch einen Unterstrich ersetzen, um den Namen gültig zu machen, und gibt Ihnen die beschriebene Warnung, um Sie darüber zu informieren.

    
___ qstnhdr ___ So lösen Sie die Compiler-Warnung "Ressourcenname ist keine gültige ID" ___ answer2274126 ___

Basierend auf dem Link, den Sie in der Frage gepostet haben, denke ich, dass Sie wahrscheinlich nach %code% fragen - das bedeutet, dass Visual Studio eine Ressourcendatei generiert, die Ihnen den Zugriff auf Ressourcen über typisierte Eigenschaften ermöglicht, zB

%Vor%

im Gegensatz zu nicht typisierten Ressourcen, in denen Sie den Rückgabewert selbst umwandeln müssen, weil er den Typ System.Object anstelle eines bestimmten Typs zurückgibt.

%Vor%     
___ answer2274132 ___

"Stark typisiert" bedeutet in diesem Fall, dass Visual Studio versucht, aus Ihren Ressourcennamen ein Objektmodell für Sie zu generieren.

Beispiel: Sie haben eine Ressourcendatei mit URLs, die auf Ihre bevorzugten Websites verweisen. Ihre Ressourcen sind etwas wie:

Wenn die Ressource generate verwendet wird, um dies stark zu tippen, erhalten Sie ein Objektmodell, das wie folgt aufgerufen werden kann:

%code%

Wenn Sie eine Periode im Namen der Ressource haben, kann der Codegenerator sie nicht verwenden, da dies ungültige Namen im Resources-Objekt erzeugen würde. Zum Beispiel:

Dies wäre ungültig, weil es versuchen würde, eine Ressource namens %code%

zu erstellen     
___ answer2274120 ___

Ich bin mir nicht sicher, ob es Ihnen helfen wird, Ihr Problem zu lösen, aber im Interesse der Beantwortung Ihrer eigentlichen Frage. Stark typisiert bedeutet, dass die Variable einen bestimmten Typ hat, im Gegensatz zu einem Typ, der zur Laufzeit festgelegt wird. Besuche Wikipedia

Zum Beispiel:

%Vor%

Bedeutet, dass die Zählervariable stark typisiert ist, da wir wissen, dass es ein Int32 ist. Andere Sprachen oder die Verwendung dynamischer Schlüsselwörter bedeuten:

%Vor%

bedeutet, dass der Zähler nicht stark typisiert ist, da er zur Laufzeit vom Ergebnis von ResultOfFunc () bestimmt wird.

    
___ answer2274187 ___

Ich vermute, dass Sie eine Ressource namens "MB ArchiveRestore.cs 11" haben. Seit VS 2005 generiert der Compiler (oder genauer gesagt ein Add-On-Tool) automatisch Zugriffsklassen für eingebettete Ressourcen. Diese können zum Abrufen der Ressourcen verwendet werden. Die Klasseneigenschaft für Ihr Beispiel ist wahrscheinlich %code% . Diese strikt typisierten Ressourcenklassen bieten auch eine bequeme Möglichkeit zur Lokalisierung.

    
___ tag123resources ___ Assets (wie Arbeitsspeicher, Speicherplatz, CPU-Leistung oder Ähnliches), die für einen effektiven Betrieb oder physische Dateien (wie Bilder, Konfigurationsdateien oder andere) benötigt werden, um eine externe Erweiterung für eine Anwendung bereitzustellen. ___ answer2274129 ___

Ich müsste raten, dass es sich am Ende über das 11 beschweren würde, was es nicht zu einer gültigen C # -Datei machen würde, also keine gültige Ressource.

    
___ tag123compilerwarnings ___ Von einem Compiler ausgegebene Meldungen, die auf mögliche Probleme im Code oder in der Konfiguration hinweisen. ___ tag123c ___ C # (sprich "Cis") ist eine objektorientierte Programmiersprache auf hohem Niveau, die für die Erstellung einer Vielzahl von Anwendungen entwickelt wurde, die auf dem .NET Framework (oder .NET Core) ausgeführt werden. C # ist einfach, leistungsfähig, typsicher und objektorientiert. ___ answer2274124 ___

Das Problem tritt auf, weil %code% kein gültiges Zeichen in Bezeichnern ist.

  

Was bedeutet stark typisiert genau?

Obwohl es für diese spezielle Frage nicht relevant ist, bedeutet "stark typisiert", dass ein Objekt eine bestimmte Vorstellung von Typ hat. Beispielsweise können Sie in C # %code% nicht ausführen, weil "5" eine Zeichenfolge und %code% eine Ganzzahl ist - ihre Typen sind nicht miteinander kompatibel.

Dies ist der Gegensatz zu "schwach typisierten" Sprachen, wo der Begriff "Typ" nicht so stark ist. Eine schwach typisierte Sprache könnte entscheiden, dass für etwas wie %code% die richtige Antwort 11 ist.

    
___
Kevin 16.02.2010, 15:46
quelle

7 Antworten

7

Stark typisiert bedeutet, dass eine Variable, ein Feld oder eine Eigenschaft einem bestimmten Typ entspricht und nicht nur Object .

%Vor%

Wenn Sie stark typisierte Ressourcen verwenden, wird Code mit stark typisierten Eigenschaften für alle Ihre Ressourcen generiert. In diesem Fall wird der Ressourcenname als Eigenschaftsname verwendet, daher muss es ein gültiger C # -Eigenschaftsname sein. Ihr Beispiel MB_ArchiveRestore.cs_11 enthält einen Punkt und ist daher kein gültiger Eigenschaftenname. Der Code-Generator wird den Punkt durch einen Unterstrich ersetzen, um den Namen gültig zu machen, und gibt Ihnen die beschriebene Warnung, um Sie darüber zu informieren.

    
Daniel Brückner 16.02.2010, 15:54
quelle
9

Basierend auf dem Link, den Sie in der Frage gepostet haben, denke ich, dass Sie wahrscheinlich nach strongly typed resource generation fragen - das bedeutet, dass Visual Studio eine Ressourcendatei generiert, die Ihnen den Zugriff auf Ressourcen über typisierte Eigenschaften ermöglicht, zB

%Vor%

im Gegensatz zu nicht typisierten Ressourcen, in denen Sie den Rückgabewert selbst umwandeln müssen, weil er den Typ System.Object anstelle eines bestimmten Typs zurückgibt.

%Vor%     
Marek 16.02.2010 15:51
quelle
5

Das Problem tritt auf, weil . kein gültiges Zeichen in Bezeichnern ist.

  

Was bedeutet stark typisiert genau?

Obwohl es für diese spezielle Frage nicht relevant ist, bedeutet "stark typisiert", dass ein Objekt eine bestimmte Vorstellung von Typ hat. Beispielsweise können Sie in C # int i = "5"; nicht ausführen, weil "5" eine Zeichenfolge und i eine Ganzzahl ist - ihre Typen sind nicht miteinander kompatibel.

Dies ist der Gegensatz zu "schwach typisierten" Sprachen, wo der Begriff "Typ" nicht so stark ist. Eine schwach typisierte Sprache könnte entscheiden, dass für etwas wie i = 5; j = "6"; print (i + j); die richtige Antwort 11 ist.

    
John Feminella 16.02.2010 15:51
quelle
1

"Stark typisiert" bedeutet in diesem Fall, dass Visual Studio versucht, aus Ihren Ressourcennamen ein Objektmodell für Sie zu generieren.

Beispiel: Sie haben eine Ressourcendatei mit URLs, die auf Ihre bevorzugten Websites verweisen. Ihre Ressourcen sind etwas wie:

Wenn die Ressource generate verwendet wird, um dies stark zu tippen, erhalten Sie ein Objektmodell, das wie folgt aufgerufen werden kann:

string googleUrl = Resources.Google; string msUrl = Resources.Microsoft;

Wenn Sie eine Periode im Namen der Ressource haben, kann der Codegenerator sie nicht verwenden, da dies ungültige Namen im Resources-Objekt erzeugen würde. Zum Beispiel:

Dies wäre ungültig, weil es versuchen würde, eine Ressource namens Resources.Asp.NET

zu erstellen     
Derick Bailey 16.02.2010 15:52
quelle
0

Ich bin mir nicht sicher, ob es Ihnen helfen wird, Ihr Problem zu lösen, aber im Interesse der Beantwortung Ihrer eigentlichen Frage. Stark typisiert bedeutet, dass die Variable einen bestimmten Typ hat, im Gegensatz zu einem Typ, der zur Laufzeit festgelegt wird. Besuche Wikipedia

Zum Beispiel:

%Vor%

Bedeutet, dass die Zählervariable stark typisiert ist, da wir wissen, dass es ein Int32 ist. Andere Sprachen oder die Verwendung dynamischer Schlüsselwörter bedeuten:

%Vor%

bedeutet, dass der Zähler nicht stark typisiert ist, da er zur Laufzeit vom Ergebnis von ResultOfFunc () bestimmt wird.

    
Ian 16.02.2010 15:51
quelle
0

Ich müsste raten, dass es sich am Ende über das 11 beschweren würde, was es nicht zu einer gültigen C # -Datei machen würde, also keine gültige Ressource.

    
Tarka 16.02.2010 15:52
quelle
0

Ich vermute, dass Sie eine Ressource namens "MB ArchiveRestore.cs 11" haben. Seit VS 2005 generiert der Compiler (oder genauer gesagt ein Add-On-Tool) automatisch Zugriffsklassen für eingebettete Ressourcen. Diese können zum Abrufen der Ressourcen verwendet werden. Die Klasseneigenschaft für Ihr Beispiel ist wahrscheinlich Properties.Resources.MB_ArchiveRestore.cs_11 . Diese strikt typisierten Ressourcenklassen bieten auch eine bequeme Möglichkeit zur Lokalisierung.

    
rotti2 16.02.2010 16:00
quelle

Tags und Links