我遇到了与Type exists in 2 assemblies相同的问题:
类型存在于<ASSEMBLY1.dll>和<ASSEMBLY2.dll>中
我尝试了问题中最受欢迎的答案, 但是我仍然收到错误信息。
我认为这是因为我的设置与该问题有很大不同: 我有两个项目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存在于<Dependency (VendorA)>和<Dependency (VendorB)>中
我已经按照答案中的建议,在ProejctC
中为ProjectB
的引用添加了别名projectb
,但它没有修复错误——可能是因为源不是项目本身,而是依赖项的依赖项。
我该如何修复这个错误,以便我可以捕获异常?我永远不打算使用来自“Dependency(VendorB)”的任何类型,并且如果这提供更简单的解决方案,我更喜欢将其存在于ProjectB
中。
ProjectB
中将UnrelatedPackage2
的PackageReference
设置为<PrivateAssets>all</PrivateAssets>
。这样做,您将防止该软件包(及其依赖项)的引用在上游(ProjectB
和ProjectC
)可见。 - dymanoid<PrivateAssets>all</PrivateAssets>
没有任何效果。所有的包仍然在上游可见,错误仍然存在。不过这让我想到了一个问题,它有着完全不同的名称,但是也有类似的问题,并且也被建议使用同样的方法,但是同样没有起作用。幸运的是,另一个答案起作用了。 - wondra