首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何确保OpenXml程序集不会导致与SpreadsheetLight的冲突?

如何确保OpenXml程序集不会导致与SpreadsheetLight的冲突?
EN

Stack Overflow用户
提问于 2016-03-22 21:31:11
回答 3查看 6.3K关注 0票数 7

我是努戈SpreadsheetLight。为了随后使用它,我需要添加以下用法:

代码语言:javascript
复制
using DocumentFormat.OpenXml;
using DocumentFormat.OpenXml.Spreadsheet;
using SpreadsheetLight;

要识别前两个("DocumentFormat"),我还需要NuGet微软的"Open“

我得到了最新版本的2.5

然而,即使如此,我还是得到了一个错误的信息,认为需要引用它:

类型'DocumentFormat.OpenXml.Spreadsheet.InlineString‘是在未引用的程序集中定义的。必须添加对程序集'DocumentFormat.OpenXml,Version=2.0.5022.0,Culture=neutral,PublicKeyToken=31bf3856ad364e35‘的引用。

这一行SpreadsheetLight代码触发了这个msg:

代码语言:javascript
复制
sl.SetCellValue("A1", true); // "sl" is an SLDocument

因此,我从我的项目中删除了NuGot (Version2.6.0.0,RuntimeVersionv4.0.30319)的引用,然后通过浏览C:\Program (X86)\Open\V2.0\lib并选择"DocumentFormat.OpenXml.dll“将该引用添加回

然后,我收到了一个编译器警告:

发现同一依赖程序集的不同版本之间的冲突。请在项目文件中将"AutoGenerateBindingRedirects“属性设置为true。有关更多信息,请参见http://go.microsoft.com/fwlink/?LinkId=294190

我注意到我从文件系统中添加的DLL是2.5.5631.0版本,而作为参考方式安装的DLL是2.6.0.0运行时版本也不同(v4.0.30319是由NuGetting“”安装的,但我手动添加的DLL版本是2.5.5631.0,运行时版本v4.0.30319 )。

根据,我认为我应该通过将<AutoGenerateBindingRedirects>false</AutoGenerateBindingRedirects>更改为true来编辑.csproj文件,但是AutoGenerateBindingRedirects并不存在。

我不知道是否应该添加它,如果应该的话(在其中的“块”)。我宁愿安全地玩它,并缓解警告引擎。如何确保OpenXml程序集不会导致冲突?

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2016-03-22 22:28:32

缓解这一警告(让它驶向日落)是将DocumentFormat.OpenXML版本降级为2.0.5022.0版本(运行时版本v2.0.50727)的问题。

我发现这是因为这段代码来自"Hello“示例这里

代码语言:javascript
复制
SLDocument sl = new SLDocument();
sl.SetCellValue("A1", true);
. . .

...failed上的第一行,“无法加载文件或程序集'DocumentFormat.OpenXml,Version=2.0.5022.0,Culture=neutral,PublicKeyToken=31bf3856ad364e35‘或其依赖项之一”

因此,由于它需要2.0版本,所以我删除了该文件的2.5.5631.0,然后删除了NuGot "OpenXML SDK2.0“。即版本2.0.5022.0和运行时版本v2.0.50727

所以:毕竟不需要用神秘的布尔属性来更新项目文件。

这给了我一些扇子,尽管,不得不使用一个较旧的版本的一个程序集。

更新

DocumentFormat.OpenXml需要“回溯”,这一点得到了这里的证实。

票数 5
EN

Stack Overflow用户

发布于 2016-04-30 22:18:51

我们可以通过将DocumentFormat.OpenXml从2.0.5022.0版本重定向到更新的版本,例如2.5.5631.0版本来解决这个问题。要做到这一点,应该在web.config中添加新的<dependentAssembly>项:

代码语言:javascript
复制
<configuration>
  ...
  <runtime>
      <assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1">
         ...
         <dependentAssembly>
            <assemblyIdentity name="DocumentFormat.OpenXml" publicKeyToken="31bf3856ad364e35"/>
            <bindingRedirect oldVersion="1.0.0.0-2.0.5022.0" newVersion="2.5.5631.0"/>
         </dependentAssembly>
      </assemblyBinding>
  </runtime>
  ...
<configuration>
票数 4
EN

Stack Overflow用户

发布于 2019-01-23 16:22:10

Spreadsheetlight适用于3.4.5版本后的DocumentFormat.OpenXml 2.5:

版本3.4.5 - SmartTags现在不再考虑了(现在不太聪明了,是吗?;)。这意味着代码现在已经为OpenXMLSDK2.5做好了准备!是的,它现在适用于OpenXMLSDK2.5(我提到过吗?lol)。

引用来源:https://www.nuget.org/packages/SpreadsheetLight/

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/36165618

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档