如何让引用的本地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
相关产品推荐
相关产品推荐

