我有一个.net471项目,我目前正在尝试升级到.net6,我们称之为项目A。
项目A有一个ProjectReference
到项目B。项目A也有许多PackageReferences
。其中一个PackageReferences
,包C,有一个PackageReference
到包B,这是项目B的一个nuget包。
因此,A引用B和C,C也引用B的 * 版本 *。
在.net471下,一切都很好。一些巫毒魔法正在发生,似乎允许所有的引用都被解析,唯一存在的来自项目B的dll是项目B构建dll。(nuget版本似乎不存在)。
在.net6下,一切都构建好了,看起来和以前一样,项目B dll存在(不是nuget Package B),但是当代码运行时,Package C现在尝试调用Package B,但是失败了,因为版本化的dll不存在。
目前,我能想到的唯一允许.net471工作的方法是在csproj中添加一个AutoGenerateBindingRedirects
标记,但是,该标记似乎没有在我的.net6项目中产生任何更改。
去掉项目引用以支持nuget引用并不是我们解决方案列表中的首要问题。有哪些选项可以保留项目引用,并满足包对版本化dll的需求?
1条答案
按热度按时间7ajki6be1#
根据article,在
csproj
中添加类似的东西应该在运行时统一同一程序集的不同版本。如果您想了解更多有关程序集统一的工作原理,请访问MSDOC的链接。