# Resursfiler

Ofta jobbar vi med filer som ska finnas i samma mapp som vårt program, eller i en filsökväg relativt programmet. Till exempel:

* Json-filer som ska sparas till eller läsas in
* Bildfiler som Raylib ska läsa in och rita till skärmen
* Textfiler som innehåller spelets berättelse

Dessa letar programmet alltid efter i den nuvarande mappen (**current folder**). Vad som räknas som current folder varierar.

* Använder man en utförlig launch.json (via t.ex. [Generate assets…](/lathund-skapa-projekt.md)) så är current folder **mappen csproj-filen ligger i**.
* Använder man den ganska tomma default-launch-json-filen som C# Dev Kit numera skapar, så är current folder mappen som den kompilerade exe/dll-filen ligger i.

## Lösning 1: Kopiera filerna automatiskt till målmappen

Det här är **det rekommenderade sättet** att lösa problemet på.

Öppna projektets csproj-fil. Den bör se ut ungefär såhär:

```xml
<Project Sdk="Microsoft.NET.Sdk">

  <PropertyGroup>
    <OutputType>Exe</OutputType>
    <TargetFramework>net7.0</TargetFramework>
    <ImplicitUsings>enable</ImplicitUsings>
    <!-- <Nullable>enable</Nullable> -->
  </PropertyGroup>

  <ItemGroup>
    <PackageReference Include="Raylib-cs" Version="4.5.0.4" />
  </ItemGroup>
</Project>
```

Lägg till en ny ItemGroup, till exempel direkt under den PropertyGroup som redan finns. I den nya ItemGroup:en lägger du in nya Content-element för de filer du vill ha med.&#x20;

```xml
  <ItemGroup>
    <Content Include="character.png" CopyToOutputDirectory="Always"/>
    <Content Include="tree.png" CopyToOutputDirectory="Always"/>
  </ItemGroup>
```

### Många filer av samma typ

För att kopiera alla filer av en viss typ kan du använda \*-tecken.

```xml
  <ItemGroup>
    <Content Include="*.png" CopyToOutputDirectory="Always"/>
  </ItemGroup>
```

### En hel mapp

Skapa en mapp där du lägger alla bilder, textfiler och annat du vill ha med. Döp den till t.ex. Assets.

Gör så att mappen, inklusive alla undermappar och filer, kopieras:

```xml
  <ItemGroup>
    <Content Include="Assets\**\*.*" CopyToOutputDirectory="Always"/>
  </ItemGroup>
```

## Lösning 2: Lägg filerna manuellt till målmappen

* Lägg alla nödvändiga filer direkt till mappen där exe/dll:en ligger. Kör du dotnet 7 blir det i **bin\Debug\net7.0**.
* Kom ihåg att inte ta bort mappen utan att vara säker på att du har kopior av filerna!
* Kom ihåg att kopiera in samma filer i din exe-fils mapp när du [kompilerar för publicering](/kompilering-och-publicering.md)!


---

# Agent Instructions: Querying This Documentation

If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://csharp.progdocs.se/filhantering/resursfiler.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
