如何有效地在nuget和项目引用之间切换?

Mac*_*ius 5 nuget

我正在开发一个专用测试工具,该工具在核心库和几个扩展插件之间分配。

扩展项目依赖于通过私有MyGet feed的核心库,因此我可以单击pack并上传到MyGet feed,而不会带来很多麻烦。我所面临的问题是,除非我发布了核心NuGet软件包的全新版本,否则对核心库的任何API更新都不会反映在扩展库中。

这本身并没有那么糟糕,但是它有两个生产力杀手级的含义:我不能在扩展代码上下文中调试核心代码,而使我的开发迭代过程依赖MyGet却是一个巨大的放缓。

我怎样才能解决这个问题?每当我想生成新的NuGet程序包时,我一直在项目和NuGet依赖项之间进行手动切换,但是我敢肯定,其他人必须对此问题有更好的解决方案。

Sam*_*cey 7

我一直在使用NuGet Reference Switcher来做到这一点-这是一个Visual Studio扩展,可以精确地解决此问题:

  • VS2015:https://marketplace.visualstudio.com/items itemName = RicoSuter.NuGetReferenceSwitcherforVisualStudio2015
  • VS2017:https://marketplace.visualstudio.com/items itemName = RicoSuter.NuGetReferenceSwitcherforVisualStudio2017

使用此功能的工作流程仍不完美,但比手动切换项目要好。我很想听听其他想法。

  • @Machinarus 你能提供一个例子吗? (4认同)
  • 我最终根据引用的项目是否可达使用条件引用,在后一种情况下使用包引用。这适合我需要在 docker 容器上有效地打包我的应用程序 (3认同)

raV*_*720 6

  1. 通过nuget添加库
  2. 通过项目引用添加相同的库
  3. 编辑项目文件并添加条件:
<ItemGroup>
<PackageReference Include="Library.Common" Version="3.0.1" Condition="'$(Configuration)'=='Release'"/>  
</ItemGroup>

<ItemGroup>
<ProjectReference Include="..\..\Library.Common\Library.Common\Library.Common.csproj" Condition="'$(Configuration)'=='Debug'"/>
</ItemGroup>
Run Code Online (Sandbox Code Playgroud)
  1. 使用适当的配置通过项目参考进行调试并通过 nuget 参考进行发布