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

如何让引用的本地DLL自动供解决方案内其他依赖项目使用?

多项目解决方案中本地DLL与NuGet包的优雅切换引用

背景

项目依赖其他解决方案/仓库的NuGet包,现有开发流程为:修改代码→升级版本→提交PR→等待合并→CI/CD发布,全程耗时约30分钟,流程繁琐。为了实现两个仓库并行开发、减少小PR数量,计划先完成所有修改再提交PR,因此需要动态切换本地DLL与NuGet包的引用。

尝试的初始方案

使用以下MSBuild配置实现切换,单个项目中可正常工作:

<ItemGroup>
  <Choose>
    <When Condition="Exists('/path/to/local/package.dll')">
      <ItemGroup>
        <Reference Include="My.Package">
          <HintPath>/path/to/local/package.dll</HintPath>
        </Reference>
      </ItemGroup>
    </When>
    <Otherwise>
      <ItemGroup>
        <PackageReference Include="My.Package" Version="9.9.9" />
      </ItemGroup>      
    </Otherwise>
  </Choose>
</ItemGroup>

遇到的问题

在存在依赖关系的解决方案中(如My.Project.BusinessLogic被Api和Functions项目引用),Api和Functions项目会因找不到My.Package的本地DLL而报编译错误。

当前临时解决方案

给每个依赖项目添加以下配置,可解决编译问题,但需要逐个项目配置,不够优雅:

<ItemGroup Condition="Exists('/path/to/local/package.dll')">
  <Reference Include="/path/to/local/package.dll"/>
</ItemGroup>

期望与现状

希望实现:My.Project.BusinessLogic构建时自动将本地DLL导出给所有依赖它的项目。

后续通过ChatGPT找到一个临时有效方案:在<When>节点内添加<CopyLocalLockFileAssemblies>true</CopyLocalLockFileAssemblies>,并增加环境变量判断条件,已验证可行,但仍寻求更优的实现方式。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.17 04:57:08