# Vytvoření balíčku z aplikace Visual Studio

Pokud vyvíjíte sestavy, které mají být publikovány jako balíček aplikace Dynamo, lze projekt nakonfigurovat tak, aby seskupil všechny potřebné komponenty a uložil je do adresářové struktury kompatibilní s balíčkem. To umožní rychlé testování projektu jako balíčku a simulaci uživatelského prostředí.

#### Jak provést sestavení přímo do složky balíčku <a href="#how-to-build-directly-to-the-package-folder" id="how-to-build-directly-to-the-package-folder"></a>

V aplikaci Visual Studio lze balíček sestavit dvěma způsoby:

* Můžete přidat události po sestavení prostřednictvím dialogu Nastavení projektu, které používají příkaz xcopy nebo skripty jazyka Python ke kopírování potřebných souborů.
* Pomocí cíle sestavení AfterBuild v souboru `.csproj` můžete vytvořit úlohy kopírování souborů a adresářů.

Metoda AfterBuild je upřednostňovanou metodou pro tyto typy operací (a metodou popsanou v této příručce), protože se nespoléhá na kopírování souborů, které nemusí být v počítači, ve kterém sestavení probíhá, k dispozici.

#### Kopírování souborů balíčku pomocí metody AfterBuild <a href="#copy-package-files-with-the-afterbuild-method" id="copy-package-files-with-the-afterbuild-method"></a>

Nastavte strukturu adresáře v úložišti tak, aby zdrojové soubory byly odděleny od souborů balíčku. Při práci s případovou studií CustomNodeModel umístěte projekt aplikace Visual Studio a všechny související soubory do nové složky `src`. Všechny balíčky vygenerované projektem budou uloženy do této složky. Struktura složek by nyní měla vypadat takto:

```
CustomNodeModel
> src
  > CustomNodeModel
  > CustomNodeModelFunction
  > packages
  > CustomNodeModel.sln
```

![Přesouvání souborů projektu](/files/slgupNzGX4JRo5P6kFYw)

> 1. Přesuňte soubory projektu do nové složky `src`.

Nyní, když jsou zdrojové soubory v samostatné složce, přidejte v aplikaci Visual Studio do souboru `CustomNodeModel.csproj` cíl `AfterBuild`. Tím se potřebné soubory zkopírují do nové složky balíčku. Otevřete soubor `CustomNodeModel.csproj` v textovém editoru (použili jsme [Atom](https://atom.io)) a umístěte cíl sestavení před koncový štítek `</Project>`. Tento cíl AfterBuild zkopíruje všechny soubory DLL, PBD, XML a CONFIG do nové složky bin a vytvoří složky dyf a extra.

```
  <Target Name="AfterBuild">
    <ItemGroup>
      <Dlls Include="$(OutDir)*.dll" />
      <Pdbs Include="$(OutDir)*.pdb" />
      <Xmls Include="$(OutDir)*.xml" />
      <Configs Include="$(OutDir)*.config" />
    </ItemGroup>
    <Copy SourceFiles="@(Dlls)" DestinationFolder="$(SolutionDir)..\packages\CustomNodeModel\bin\" />
    <Copy SourceFiles="@(Pdbs)" DestinationFolder="$(SolutionDir)..\packages\CustomNodeModel\bin\" />
    <Copy SourceFiles="@(Xmls)" DestinationFolder="$(SolutionDir)..\packages\CustomNodeModel\bin\" />
    <Copy SourceFiles="@(Configs)" DestinationFolder="$(SolutionDir)..\packages\CustomNodeModel\bin\" />
    <MakeDir Directories="$(SolutionDir)..\packages\CustomNodeModel\dyf" />
    <MakeDir Directories="$(SolutionDir)..\packages\CustomNodeModel\extra" />
  </Target>
```

![Umístění cíle AfterBuild](/files/4fOMqxAMZ1OWDwTaJFk0)

> Je třeba zajistit, aby byl cíl přidán do souboru `CustomNodeModel.csproj` (nikoli do jiného souboru projektu) a aby projekt neměl žádná existující nastavení po sestavení.
>
> 1. Umístěte cíl AfterBuild před koncový štítek `</Project>`.

V části `<ItemGroup>` je definováno množství proměnných, které představují konkrétní typy souborů. Například proměnná `Dll` představuje všechny soubory ve výstupním adresáři, jejichž přípona je `.dll`.

```
<ItemGroup>
  <Dlls Include="$(OutDir)*.dll" />
</ItemGroup>
```

Úloha `Copy` zkopíruje všechny soubory `.dll` do adresáře, konkrétně do složky balíčku, do které provádíme sestavení.

```
<Copy SourceFiles="@(Dlls)" DestinationFolder="$(SolutionDir)..\packages\CustomNodeModel\bin\" />
```

Balíčky aplikace Dynamo obvykle obsahují složky `dyf` a `extra` pro vlastní uzly aplikace Dynamo a další komponenty, například obrázky. Chcete-li vytvořit tyto složky, je nutné použít úlohu `MakeDir`. Tato úloha vytvoří příslušnou složku, pokud neexistuje. Soubory můžete do této složky přidat ručně.

```
<MakeDir Directories="$(SolutionDir)..\packages\CustomNodeModel\extra" />
```

Pokud projekt sestavíte, měla by se nyní ve složce projektu vedle dříve vytvořené složky `src` nacházet i složka `packages`. V adresáři `packages` je složka obsahující vše, co je pro balíček potřeba. Do složky balíčku je také nutné zkopírovat soubor `pkg.json`, aby aplikace Dynamo věděla, že má balíček načíst.

![Kopírování souborů](/files/HLU2eWwZTHK3BZOtXWWp)

> 1. Nová složka packages vytvořená cílem AfterBuild.
> 2. Existující složka src s projektem.
> 3. Složky `dyf` a `extra` vytvořené z cíle AfterBuild.
> 4. Ručně zkopírujte soubor `pkg.json`.

Nyní můžete balíček publikovat pomocí nástroje Package Manager aplikace Dynamo nebo jej přímo zkopírovat do adresáře balíčku aplikace Dynamo: `<user>\AppData\Roaming\Dynamo\1.3\packages`.


---

# 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://primer2.dynamobim.org/cs/1_developer_primer_intro/3_developing_for_dynamo/1-build-a-package-from-visual-studio.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.
