從 Visual Studio 建置套件

如果您正在開發要發佈為 Dynamo 套件的組合,可以將專案規劃為群組所有必要資產,並將這些資產放在與套件相容的目錄結構中。這可讓專案以套件方式進行快速測試,並模擬使用者的體驗。

如何直接建置到套件資料夾

有兩種方法可以在 Visual Studio 中建置套件:

  • 透過「專案設定」對話方塊,使用 xcopy 或 Python 指令碼複製必要檔案,加入建置後事件

  • .csproj 檔案中使用「AfterBuild」建置目標,來建立檔案和目錄複製工作

「AfterBuild」是這些類型作業 (以及本指南中介紹的作業) 的偏好方法,因為它不依賴在建置電腦上可能無法使用的檔案複製。

使用 AfterBuild 方法複製套件檔案

在儲存庫中設定目錄結構,讓原始碼檔案與套件檔案分開。使用 CustomNodeModel 案例研究,將 Visual Studio 專案及所有關聯的檔案放到新的 src 資料夾中。您將會在此資料夾中儲存專案產生的所有套件。資料夾結構現在應如下所示:

CustomNodeModel
> src
  > CustomNodeModel
  > CustomNodeModelFunction
  > packages
  > CustomNodeModel.sln
  1. 將專案檔移到新的 src 資料夾

由於原始碼檔案位於不同的資料夾,因此請在 Visual Studio 的 CustomNodeModel.csproj 檔案加入 AfterBuild 目標。這會將必要的檔案複製到新的套件資料夾中。在文字編輯器 (我們使用 Atom) 中開啟 CustomNodeModel.csproj 檔案,在 </Project> 結束標籤之前放置建置目標。此 AfterBuild 目標會將所有 .dll、.pbd、.xml 和 .config 檔案複製到新的 bin 資料夾中,並建立 dyf 和 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>

我們需要確保目標已加到 CustomNodeModel.csproj 檔案 (而不是另一個專案檔) 中,而且專案沒有任何既有的「建置後」設定。

  1. </Project> 結束標籤前放置 AfterBuild 目標。

<ItemGroup> 區段中定義了許多變數來表示特定檔案類型。例如,Dll 變數表示輸出目錄中其副檔名為 .dll 的所有檔案。

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

Copy 工作是將所有 .dll 檔案複製到目錄,具體來說是要建置到的套件資料夾。

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

Dynamo 套件通常會有 dyfextra 資料夾,分別給 Dynamo 自訂節點和其他資產 (例如影像) 使用。若要建立這些資料夾,我們需要使用 MakeDir 工作。如果資料夾不存在,此工作會建立一個。您可以手動將檔案加到此資料夾中。

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

如果您建置專案,現在專案資料夾在先前建立的 src 資料夾旁邊應該會有一個 packages 資料夾。packages 目錄內有一個資料夾,其中包含套件所需的所有內容。我們也需要將 pkg.json 檔案複製到套件資料夾,讓 Dynamo 知道要載入套件。

  1. AfterBuild 目標建立的新套件資料夾

  2. 專案既有的 src 資料夾

  3. 從 AfterBuild 目標建立的 dyfextra 資料夾

  4. 手動複製 pkg.json 檔案。

現在,您可以使用 Dynamo 的 Package Manager 發佈套件,或直接將套件複製到 Dynamo 的套件目錄:<user>\AppData\Roaming\Dynamo\1.3\packages

Last updated