C# 需要让具有传递引用的Nuget包被单元测试的本地引用覆盖

C# 需要让具有传递引用的Nuget包被单元测试的本地引用覆盖,c#,.net,visual-studio,nuget,nuget-package,C#,.net,Visual Studio,Nuget,Nuget Package,在我的解决方案中,我有一个单元测试项目A 我的测试项目A有一个对包B的直接nuget引用,其中包括对nuget包C的传递引用 我的测试项目A也有对本地项目C'的本地引用 所以,在我的项目A中,我既有对C的本地引用,也有对C的nuget引用 这是应用的nuget,而不是本地引用 我想为我的测试应用本地参考 恢复: A(单元测试)>B(直接nuget)>C(瞬态nuget) A(单元测试)>C'(本地参考) 我的项目在.net framework 4.6.1中我想您已经在项目A中使用了 而且您似

在我的解决方案中,我有一个单元测试项目A

我的测试项目A有一个对包B的直接nuget引用,其中包括对nuget包C的传递引用

我的测试项目A也有对本地项目C'的本地引用

所以,在我的项目A中,我既有对C的本地引用,也有对C的nuget引用

这是应用的nuget,而不是本地引用

我想为我的测试应用本地参考

恢复:

  • A(单元测试)>B(直接nuget)>C(瞬态nuget)
  • A(单元测试)>C'(本地参考)
我的项目在.net framework 4.6.1中

我想您已经在项目A中使用了

而且您似乎已经在
xxx.csproj
项目A
文件中为项目C使用了nuget packageProjectReference

像这样:

 <Reference Include="ProjectB, Version=1.0.0.0, Culture=neutral, processorArchitecture=MSIL">
      <HintPath>xxx\ProjectB.dll</HintPath>
 </Reference>
 <Reference Include="ProjectC, Version=1.0.0.0, Culture=neutral, processorArchitecture=MSIL">
      <HintPath>xxx\ProjectC.dll</HintPath>
 </Reference>

 <ProjectReference Include="C:\xxx\ProjectC.csproj">
        <Name>ProjectC</Name>
 </ProjectReference>
2)或者您应该删除或注释掉nuget参考节点,如
建议1
,然后保留
项目C
的项目参考节点。只保留后者

=========================================

答案更新自k4st0r42


项目A中删除所有nuget引用和项目引用,然后只向本地项目C添加一个引用

Hi k4st0r42,有关于此问题的更新吗?请检查我的答案是否有用。如果有帮助,请不要忘记。如果没有,请随时告诉我们:对不起,最后我通过删除所有引用,重新启动VS并添加对我的本地项目的引用来解决它…感谢您的反馈。因为你的解决方法和我的类似。当您在
hintpath
下使用lcoal dll时,这意味着您直接引用了本地项目。无论如何,感谢您与我们分享解决方案
我已将您的解决方案添加到答案中,您可以对其进行标记,以帮助其他社区成员搜索和处理类似问题:)
高级感谢!您可以使用.csproj文件中的条件,并在引用项目和nuget之间切换。我们通常会为此生成特殊的解决方案,如果使用共享库,则让构建服务器基于NuGet发布代码和项目参考代码运行测试
<Reference Include="ProjectC, Version=1.0.0.0, Culture=neutral, processorArchitecture=MSIL">
      <HintPath>xxx\local path\ProjectC.dll(use the dll of the local project C)</HintPath>
</Reference>