Datei in Resources nicht gefunden

  • VB.NET

Es gibt 8 Antworten in diesem Thema. Der letzte Beitrag () ist von TheFantomas.

    Datei in Resources nicht gefunden

    Neu

    Hey,

    ich kämpfe seit 2 Tagen an einem wahrscheinlich einfachen Problem. Es geht um ein VB .net Framework Projekt in Visual Studio Code.
    Hier erst mal der Code:

    Quellcode

    1. Imports System.IO
    2. Imports System.Reflection
    3. Public Class Form1
    4. Private currentBackground As String
    5. Public Sub New()
    6. InitializeComponent()
    7. SetBackgroundImage("main")
    8. End Sub
    9. Private Sub SetBackgroundImage(imageName As String)
    10. Me.BackgroundImage = LoadImageFromResource(imageName)
    11. Me.BackgroundImageLayout = ImageLayout.Stretch
    12. currentBackground = imageName
    13. UpdateButtonImages()
    14. End Sub
    15. Private Function LoadImageFromResource(imageName As String) As Image
    16. Dim assembly As Assembly = Assembly.GetExecutingAssembly()
    17. Dim resourceName As String = $"Argus163_01.Resources.{imageName}.bmp"
    18. Using stream As Stream = assembly.GetManifestResourceStream(resourceName)
    19. If stream IsNot Nothing Then
    20. Return Image.FromStream(stream)
    21. Else
    22. Throw New FileNotFoundException($"Resource '{resourceName}' not found.")
    23. End If
    24. End Using
    25. End Function
    26. Private Sub UpdateButtonImages()
    27. Select Case currentBackground
    28. Case "main"
    29. Button1.Text = "hilfe"
    30. Button2.Text = "hilfe"
    31. Button3.Text = "hilfe"
    32. Button4.Text = "hilfe"
    33. Button5.Text = "hilfe"
    34. Button6.Text = "hilfe"
    35. Button7.Text = "hilfe"
    36. Button8.Text = "hilfe"
    37. Case "hilfe"
    38. Button1.Text = "main"
    39. Button2.Text = "main"
    40. Button3.Text = "main"
    41. Button4.Text = "main"
    42. Button5.Text = "main"
    43. Button6.Text = "main"
    44. Button7.Text = "main"
    45. Button8.Text = "main"
    46. Case "Bild3"
    47. Button1.Text = "Bild1"
    48. Button2.Text = "Bild2"
    49. Button3.Text = "Bild4"
    50. Button4.Text = "Bild5"
    51. Button5.Text = "Bild6"
    52. Button6.Text = "Bild7"
    53. Button7.Text = "Bild8"
    54. Button8.Text = "Bild3"
    55. Case "Bild4"
    56. Button1.Text = "Bild1"
    57. Button2.Text = "Bild2"
    58. Button3.Text = "Bild3"
    59. Button4.Text = "Bild5"
    60. Button5.Text = "Bild6"
    61. Button6.Text = "Bild7"
    62. Button7.Text = "Bild8"
    63. Button8.Text = "Bild4"
    64. Case "Bild5"
    65. Button1.Text = "Bild1"
    66. Button2.Text = "Bild2"
    67. Button3.Text = "Bild3"
    68. Button4.Text = "Bild4"
    69. Button5.Text = "Bild6"
    70. Button6.Text = "Bild7"
    71. Button7.Text = "Bild8"
    72. Button8.Text = "Bild5"
    73. Case "Bild6"
    74. Button1.Text = "Bild1"
    75. Button2.Text = "Bild2"
    76. Button3.Text = "Bild3"
    77. Button4.Text = "Bild4"
    78. Button5.Text = "Bild5"
    79. Button6.Text = "Bild7"
    80. Button7.Text = "Bild8"
    81. Button8.Text = "Bild6"
    82. Case "Bild7"
    83. Button1.Text = "Bild1"
    84. Button2.Text = "Bild2"
    85. Button3.Text = "Bild3"
    86. Button4.Text = "Bild4"
    87. Button5.Text = "Bild5"
    88. Button6.Text = "Bild6"
    89. Button7.Text = "Bild8"
    90. Button8.Text = "Bild7"
    91. Case "Bild8"
    92. Button1.Text = "Bild1"
    93. Button2.Text = "Bild2"
    94. Button3.Text = "Bild3"
    95. Button4.Text = "Bild4"
    96. Button5.Text = "Bild5"
    97. Button6.Text = "Bild6"
    98. Button7.Text = "Bild7"
    99. Button8.Text = "Bild8"
    100. Case Else
    101. ' Optional: Standardverhalten, wenn kein bekanntes Bild gesetzt ist
    102. End Select
    103. End Sub
    104. Private Sub ChangeBackground(buttonText As String)
    105. SetBackgroundImage(buttonText)
    106. End Sub
    107. Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
    108. ChangeBackground(Button1.Text)
    109. End Sub
    110. Private Sub Button2_Click(sender As Object, e As EventArgs) Handles Button2.Click
    111. ChangeBackground(Button2.Text)
    112. End Sub
    113. Private Sub Button3_Click(sender As Object, e As EventArgs) Handles Button3.Click
    114. ChangeBackground(Button3.Text)
    115. End Sub
    116. Private Sub Button4_Click(sender As Object, e As EventArgs) Handles Button4.Click
    117. ChangeBackground(Button4.Text)
    118. End Sub
    119. Private Sub Button5_Click(sender As Object, e As EventArgs) Handles Button5.Click
    120. ChangeBackground(Button5.Text)
    121. End Sub
    122. Private Sub Button6_Click(sender As Object, e As EventArgs) Handles Button6.Click
    123. ChangeBackground(Button6.Text)
    124. End Sub
    125. Private Sub Button7_Click(sender As Object, e As EventArgs) Handles Button7.Click
    126. ChangeBackground(Button7.Text)
    127. End Sub
    128. Private Sub Button8_Click(sender As Object, e As EventArgs) Handles Button8.Click
    129. ChangeBackground(Button8.Text)
    130. End Sub
    131. End Class


    Beim Ausführen erhalte ich folgende Fehlermeldung:

    System.IO.FileNotFoundException: "Resource 'Argus163_01.Resources.main.bmp' not found."


    Die Ordnerstruktur sieht wie folgt aus:


    C:.
    │ Argus163_01.sln

    ├───Argus163_01
    │ │ App.config
    │ │ Argus163_01.vbproj
    │ │ Form1.Designer.vb
    │ │ Form1.resx
    │ │ Form1.vb
    │ │
    │ ├───bin
    │ │ ├───Debug
    │ │ │ Argus163_01.exe
    │ │ │ Argus163_01.exe.config
    │ │ │ Argus163_01.pdb
    │ │ │ Argus163_01.xml
    │ │ │
    │ │ └───Release
    │ ├───Images
    │ │ anschluss.bmp
    │ │ hilfe.bmp
    │ │ main.bmp
    │ │
    │ ├───My Project
    │ │ Application.Designer.vb
    │ │ Application.myapp
    │ │ AssemblyInfo.vb
    │ │ Resources.Designer.vb
    │ │ Resources.resx
    │ │ Settings.Designer.vb
    │ │ Settings.settings
    │ │
    │ ├───obj
    │ │ └───Debug
    │ │ │ .NETFramework,Version=v4.7.2.AssemblyAttributes.vb
    │ │ │ Argus163_01.exe
    │ │ │ Argus163_01.Form1.resources
    │ │ │ Argus163_01.g.resources
    │ │ │ Argus163_01.pdb
    │ │ │ Argus163_01.Resources.resources
    │ │ │ Argus163_01.vbproj.AssemblyReference.cache
    │ │ │ Argus163_01.vbproj.CoreCompileInputs.cache
    │ │ │ Argus163_01.vbproj.FileListAbsolute.txt
    │ │ │ Argus163_01.vbproj.GenerateResource.cache
    │ │ │ Argus163_01.xml
    │ │ │ DesignTimeResolveAssemblyReferences.cache
    │ │ │ DesignTimeResolveAssemblyReferencesInput.cache
    │ │ │
    │ │ └───TempPE
    │ │ My Project.Resources.Designer.vb.dll
    │ │
    │ └───Resources
    │ anschluss.bmp
    │ hilfe.bmp
    │ main.bmp

    ├───Images
    │ anschluss.jpg
    │ hilfe.jpg
    │ main.jpg

    └───Resources
    anschluss.jpg
    hilfe.jpg
    main.jpg



    Die Eigenschaften der Bilder für den Buildvorgang stehen auf "Eingebettete Resource".

    Ich komm nicht mehr weiter, kann mir bitte Jemand irgendwie weiterhelfen?
    Vielen Dank

    Neu

    @TheFantomas Willkommen im Forum. :thumbup:
    Wie ganz genau hast Du das Bild Deinem Projekt hinzugefügt?
    Projekt => Hinzufügen vorhandene Datei => Bild
    oder
    Projekt => Eigenschaften => Ressources => Hinzufügen vorhandene Datei => Bild
    ?
    Mit der ersten Möglichkeit ist das Bild über die Ressourcen nicht verfügbar.
    Falls Du diesen Code kopierst, achte auf die C&P-Bremse.
    Jede einzelne Zeile Deines Programms, die Du nicht explizit getestet hast, ist falsch :!:
    Ein guter .NET-Snippetkonverter (der ist verfügbar).
    Programmierfragen über PN / Konversation werden ignoriert!

    Neu

    Moin, danke für die Hilfe.

    Zweiteres, ich habe die Bilder über "Projekt => Eigenschaften => Ressources => Hinzufügen vorhandene Datei => Bild" hinzugefügt, dadurch wurden diese dann dem Ressourcen Ordner hinzugefügt.
    Habe es eben nochmal komplett neu gemacht, die Bilder über "Eigenschaften => Ressources => Hinzufügen vorhandene Datei => Bilder auswählen, und dann anschließend Attribut "Buildvorgang" auf "Eingebettete Ressource" ändern. Gleiche Fehlermeldung.
    Beim erstellen des Projekts hab ich den Haken für "Platzieren die die Projektmappe und das Projekt im selben Verzeichnis" NICHT ausgewählt. Heißt, mein Projekt wird in "...\source\repos\Argus163_01\Argus163_01\" erstellt. Oder müsste der Ressources Ordner eine Ebene weiter oben erstellt werden bzw. der Pfad im Script einen Ordner tiefer verwiesen werden?

    Vollzitat entfernt. ~Thunderbolt

    Dieser Beitrag wurde bereits 2 mal editiert, zuletzt von „Thunderbolt“ ()

    Neu

    Zunächst:
    Unterlass bitte das Zitieren ganzer Posts, die über dem Deinigen stehen.
    Wenn Du den Poster explizit ansprechen willst, geht das mit "@ 'USER_NAME'" (ohne Leerzeichen => @TheFantomas ).

    TheFantomas schrieb:

    und dann anschließend Attribut "Buildvorgang" auf "Eingebettete Ressource" ändern.
    Nimm mal diesen Haken raus, den habe ich noch nie verwendet.
    Falls Du diesen Code kopierst, achte auf die C&P-Bremse.
    Jede einzelne Zeile Deines Programms, die Du nicht explizit getestet hast, ist falsch :!:
    Ein guter .NET-Snippetkonverter (der ist verfügbar).
    Programmierfragen über PN / Konversation werden ignoriert!

    Neu

    @TheFantomas Erstell mal ein neues Projekt mit einer Bild-Ressource und weise sie einem PictureBox.Image zu.
    Wenn das funktioniert, musst Du den Unterschied zwischen beiden Projekten ermitteln.
    Ansonsten zippe Dein BEREINIGTES Projekt (ohne obj, bin und vs-Verzeichnisse) und hänge es an einen Post an:
    Erweiterte Antwort => Dateianhänge => Hochladen.

    Du greifst völlig falsch auf die Ressource zu, das geht so:

    VB.NET-Quellcode

    1. Me.BackgroundImage = My.Ressources.NAME_DES_BILDES

    Falls Du diesen Code kopierst, achte auf die C&P-Bremse.
    Jede einzelne Zeile Deines Programms, die Du nicht explizit getestet hast, ist falsch :!:
    Ein guter .NET-Snippetkonverter (der ist verfügbar).
    Programmierfragen über PN / Konversation werden ignoriert!

    Neu

    Den Aufruf der Prozedur in Zeile 12 musst Du völlig neu machen,
    diese Art Ressourcen haben keine Namen, sondern sie sind Bitmap-Instanzen.
    ====
    Und
    Bilder anhängen geht wie in Post #2 beschrieben.
    Falls Du diesen Code kopierst, achte auf die C&P-Bremse.
    Jede einzelne Zeile Deines Programms, die Du nicht explizit getestet hast, ist falsch :!:
    Ein guter .NET-Snippetkonverter (der ist verfügbar).
    Programmierfragen über PN / Konversation werden ignoriert!