C# 类型存在于2个程序集中(由于程序包依赖关系)

C# 类型存在于2个程序集中(由于程序包依赖关系),c#,nuget,C#,Nuget,我面临的问题与中的问题完全相同: 该类型存在于这两个问题中,但是,我仍然得到错误 我相信这是因为我的设置与问题完全不同:我有两个我的项目ProjectA和ProjectB,每个项目都使用完全不同的NuGet软件包,它们碰巧使用了一个名称完全相同但来自不同供应商(没有供应商前缀!)的依赖项/类型。ProjectC ProjectA - Packages -- UnrelatedPackage1 --- Dependency (VendorA) ProjectB - Packages -- Unre

我面临的问题与中的问题完全相同:

该类型存在于这两个问题中,但是,我仍然得到错误
我相信这是因为我的设置与问题完全不同:我有两个我的项目
ProjectA
ProjectB
,每个项目都使用完全不同的NuGet软件包,它们碰巧使用了一个名称完全相同但来自不同供应商(没有供应商前缀!)的依赖项/类型。
ProjectC

ProjectA
- Packages
-- UnrelatedPackage1
--- Dependency (VendorA)
ProjectB
- Packages
-- UnrelatedPackage2
--- Dependency (VendorB)
ProjectC
- Refences
-- ProjectA
-- ProjectB
现在,我想在
ProjectC
的代码中捕获在
ProjectA
的依赖项中引发的异常:

try {
   ProjectA.SomeClass.DoStuff();
}
catch (ExceptionFromDependency ex)
{ }
但从那以后我就不能了

和中都存在类型ExceptionFromDependency

我已经按照中的建议在
ProejctC
中的
projectb
引用中添加了一个别名
projectb
,但它没有修复错误-可能是因为源不是项目本身,而是依赖关系的依赖关系
如何修复错误以便捕获异常?我不打算使用“Dependency(VendorB)”中的任何类型,我更愿意将其存在包含到
ProjectB
,如果这提供了更简单的解决方案。

有一个别名,但无法从UI访问,请编辑并将以下
Target
添加到
ProjectC
的.csproj文件中:

<Target Name="ChangeAliasesOfAssemblies"
        BeforeTargets="FindReferenceAssembliesForReferences;ResolveReferences">
  <ItemGroup>
    <ReferencePath Condition="'%(FileName)' == 'Dependency.VendorB'">
      <Aliases>projectb</Aliases>
    </ReferencePath>
  </ItemGroup>
</Target>

项目B

其中
Dependency.VendorB
是不带“Dependency(VendorB)”包扩展名的.dll文件名。清理/重建/重新启动IDE。

添加一点元信息:不同包使用的依赖关系是MySql适配器,异常是MySql.Data.MySqlClient.MySqlException,但问题通常与此依赖性问题有关。您可以尝试在
ProjectB
中为
UnrelatedPackage2
PackageReference
设置
all
。这样做,您将阻止该包(及其依赖项)的引用在上游可见(
ProjectB
ProjectC
)。@dymanoid遗憾的是,
all
没有任何效果。所有包在上游仍然可见,错误仍然存在。然而,这给我带来了一个完全不同的名称下的类似问题,在那里它也是建议,同样也不起作用。幸运的是,另一个答案做到了。