You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

macOS下VS Code搭建分仓持久化库与Azure Function项目方案问询

跨GitHub仓库的项目结构方案(持久化库+Azure Function)

一、持久化库独立仓库(示例命名:MyProject.Persistence)

这个仓库仅存放持久化相关代码与NuGet发布配置,结构如下:

MyProject.Persistence/
├── src/
│   ├── MyProject.Persistence.csproj  # 类库项目文件,配置NuGet包元数据
│   ├── Repositories/                 # 仓储实现代码
│   ├── Models/                       # 实体模型类
│   └── DbContexts/                   # EF Core上下文等核心逻辑
├── .github/
│   └── workflows/
│       └── nuget-publish.yml         # GitHub Actions工作流,自动发布私有NuGet包
├── README.md
└── .gitignore
  • 项目文件MyProject.Persistence.csproj需配置包ID、版本、作者等元数据,同时开启<GeneratePackageOnBuild>true</GeneratePackageOnBuild>以生成NuGet包
  • GitHub Actions工作流可设置为:代码打版本tag或合并到主分支时,自动将包发布到GitHub Packages私有NuGet源

二、Azure Function独立仓库(示例命名:MyProject.Functions)

这个仓库存放Azure Function业务代码,同时区分开发阶段与发布阶段的依赖方式,结构如下:

MyProject.Functions/
├── src/
│   ├── MyProject.Functions.csproj    # Function项目文件
│   ├── Functions/                    # 具体Function实现
│   ├── local.settings.json           # 本地开发配置
│   └── appsettings.json              # 生产环境配置
├── .github/
│   └── workflows/
│       └── function-deploy.yml       # GitHub Actions工作流,部署到Azure
├── Directory.Build.props             # 可选,用于环境切换依赖方式
└── .gitignore

核心配置区分

  1. 开发阶段:联动更新库与Function

    • 本地开发时,将两个仓库放在同一父目录下,在Function项目文件中直接引用持久化库的本地项目,实现实时调试更新:
      <ItemGroup>
        <ProjectReference Include="../MyProject.Persistence/src/MyProject.Persistence.csproj" />
      </ItemGroup>
      
    • 也可通过Directory.Build.props做条件切换,避免手动修改项目文件:
      <Project>
        <PropertyGroup>
          <LocalDevelopment>true</LocalDevelopment> <!-- 本地设为true,发布时改为false -->
        </PropertyGroup>
        <ItemGroup Condition=" '$(LocalDevelopment)' == 'true' ">
          <ProjectReference Include="../MyProject.Persistence/src/MyProject.Persistence.csproj" />
        </ItemGroup>
        <ItemGroup Condition=" '$(LocalDevelopment)' == 'false' ">
          <PackageReference Include="MyProject.Persistence" Version="x.y.z" />
        </ItemGroup>
      </Project>
      
  2. 发布阶段:依赖私有NuGet包

    • 发布前确保持久化库已发布到GitHub Packages私有源
    • 将Function项目文件切换为NuGet包引用:
      <ItemGroup>
        <PackageReference Include="MyProject.Persistence" Version="1.0.0" />
      </ItemGroup>
      
    • 在部署流程中配置NuGet源指向GitHub Packages私有源(可通过NuGet.Config或GitHub Actions环境变量设置),确保部署时能拉取到私有包

三、核心规则

  • 两个仓库完全独立,各自管理代码提交与版本迭代
  • 开发阶段靠本地项目引用联动调试,发布阶段严格依赖正式版本的NuGet包
  • 持久化库版本遵循语义化版本规范,每次发布新包对应打一个Git版本tag

内容的提问来源于stack exchange,提问作者lcj

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.27 19:32:45