我已经在使用DocumentFormat.Ooxml
软件包,并且还想使用ClosedXml
,这取决于同一个库的旧版本,所以我得到了:
PM> Install-Package closedxml
Attempting to resolve dependency 'DocumentFormat.OpenXml (= 1.0)'.
Installing 'DocumentFormat.OpenXml 1.0'.
Successfully installed 'DocumentFormat.OpenXml 1.0'.
Installing 'ClosedXML 0.69.2'.
Successfully installed 'ClosedXML 0.69.2'.
Install failed. Rolling back...
Install-Package : Already referencing a newer version of 'DocumentFormat.OpenXml'.
nuget实际上是否有针对这种情况的解决方案?即使我可以进行程序集重定向(我在单元测试中总是有混合结果),我在-Force
上看不到Install-Package
参数。
答案 0 :(得分:2)
目前没有计划允许将多个版本的软件包同时安装到一个项目中。这通常会导致冲突,因为需要引用2个具有相同名称的程序集(并在bin文件夹中)。
这里的问题是ClosedXML对DocumentFormat.OpenXml具有特定于版本的依赖性。您可以联系ClosedXML的所有者,看看他们是否可以发布允许使用不同版本的DocumentFormat.OpenXml的新版本。
如果不成功,那么您可以尝试通过执行以下操作来摆脱这种冲突:
这将导致绑定重定向添加到您的app / web.config文件中,如下所示:
<configuration>
<runtime>
<assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1">
<dependentAssembly>
<assemblyIdentity name="DocumentFormat.OpenXml" publicKeyToken="31bf3856ad364e35" culture="neutral" />
<bindingRedirect oldVersion="0.0.0.0-2.5.5631.0" newVersion="2.5.5631.0" />
</dependentAssembly>
</assemblyBinding>
</runtime>
</configuration>
然后你需要测试你对ClosedXML的消费,看看是否可以真正使用较新版本的DocumentFormat.OpenXml。如果它有效,你当然希望让ClosedXML的所有者知道(使用www.nuget.org上的联系人所有者链接获取该包),以便他们可以继续使用允许更新包的新版本较新的DocumentFormat.OpenXml。