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
没有任何效果。所有包在上游仍然可见,错误仍然存在。然而,这给我带来了一个完全不同的名称下的类似问题,在那里它也是建议,同样也不起作用。幸运的是,另一个答案做到了。