Hinweis
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, sich anzumelden oder das Verzeichnis zu wechseln.
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, das Verzeichnis zu wechseln.
Wert | |
---|---|
Regel-ID | IL3003 |
Kategorie | SingleFile |
Fix führt oder führt nicht zur Unterbrechung | Nicht betroffen |
Wenn Sie eine App als Einzeldatei veröffentlichen (z. B. indem Sie in einem Projekt die Eigenschaft PublishSingleFile
auf true
setzen), können Schnittstellenimplementierungen oder abgeleitete Klassen mit Membern, die keine passenden Anmerkungen zu [RequiresAssemblyFiles]
haben, dazu führen, dass ein Member mit dem Attribut aufgerufen wird, was nicht mit einer Einzeldatei kompatibel ist. Es gibt vier mögliche Szenarios, in denen die Warnung generiert werden kann:
Ein Member einer Stammklasse hat das Attribut, aber der überschreibende Member der abgeleiteten Klasse hat das Attribut nicht:
C#public class Base { [RequiresAssemblyFiles] public virtual void TestMethod() {} } public class Derived : Base { // IL3003: Base member 'Base.TestMethod' with 'RequiresAssemblyFilesAttribute' has a derived member 'Derived.TestMethod()' without 'RequiresAssemblyFilesAttribute'. For all interfaces and overrides the implementation attribute must match the definition attribute. public override void TestMethod() {} }
Ein Member einer Stammklasse hat das Attribut nicht, aber der überschreibende Member der abgeleiteten Klasse hat das Attribut:
C#public class Base { public virtual void TestMethod() {} } public class Derived : Base { // IL3003: Member 'Derived.TestMethod()' with 'RequiresAssemblyFilesAttribute' overrides base member 'Base.TestMethod()' without 'RequiresAssemblyFilesAttribute'. For all interfaces and overrides the implementation attribute must match the definition attribute. [RequiresAssemblyFiles] public override void TestMethod() {} }
Ein Schnittstellenmember hat das Attribut, aber seine Implementierung hat das Attribut nicht:
C#interface IRAF { [RequiresAssemblyFiles] void TestMethod(); } class Implementation : IRAF { // IL3003: Interface member 'IRAF.TestMethod()' with 'RequiresAssemblyFilesAttribute' has an implementation member 'Implementation.TestMethod()' without 'RequiresAssemblyFilesAttribute'. For all interfaces and overrides the implementation attribute must match the definition attribute. public void TestMethod () { } }
Ein Schnittstellenmember hat das Attribut nicht, aber seine Implementierung hat das Attribut:
C#interface INoRAF { void TestMethod(); } class Implementation : INoRAF { [RequiresAssemblyFiles] // IL3003: Member 'Implementation.TestMethod()' with 'RequiresAssemblyFilesAttribute' implements interface member 'INoRAF.TestMethod()' without 'RequiresAssemblyFilesAttribute'. For all interfaces and overrides the implementation attribute must match the definition attribute. public void TestMethod () { } }
Für alle Schnittstellen und Überschreibungen muss die Implementierung in Bezug auf das Attribut „RequiresAssemblyFilesAttribute“ übereinstimmen: Entweder es muss in beiden vorhanden sein, oder es muss in beiden fehlen. Entweder enthalten beide Member oder keines von ihnen das Attribut. Sie müssen das Attribut aus oder zu dem Schnittstellen-/Basisklassenmember oder dem implementierenden/abgeleiteten Klassenmember entfernen bzw. hinzufügen, sodass das Attribut für beide oder keinen von beiden gilt.
Sie sollten diese Warnung nicht unterdrücken.
Feedback zu .NET
.NET ist ein Open Source-Projekt. Wählen Sie einen Link aus, um Feedback zu geben: