【发布时间】:2016-03-22 21:31:11
【问题描述】:
我 Nugot SpreadsheetLight。为了随后使用它,我需要添加以下用法:
using DocumentFormat.OpenXml;
using DocumentFormat.OpenXml.Spreadsheet;
using SpreadsheetLight;
要识别前两个(“DocumentFormat”),我还需要 NuGet Microsoft 的“Open XML Format SDK”
我得到了最新版本,2.5
然而,即便如此,我还是收到了一条关于需要引用它的错误消息:
“DocumentFormat.OpenXml.Spreadsheet.InlineString”类型是在未引用的程序集中定义的。您必须添加对程序集“DocumentFormat.OpenXml, Version=2.0.5022.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35”的引用。
这行SpreadsheetLight代码激起了那个味精:
sl.SetCellValue("A1", true); // "sl" is an SLDocument
所以,我从我的项目中删除了我拥有 NuGot(版本 2.6.0.0,运行时版本 v4.0.30319)的引用,然后通过浏览到 C:\Program Files(x86)\Open XML SDK 添加回引用\V2.0\lib 并选择“DocumentFormat.OpenXml.dll”
然后我得到一个编译器警告:
发现同一依赖程序集的不同版本之间存在冲突。请在项目文件中将“AutoGenerateBindingRedirects”属性设置为 true。如需更多信息,请参阅http://go.microsoft.com/fwlink/?LinkId=294190。
我注意到我从文件系统添加的 DLL 版本是 2.5.5631.0,而作为参考安装的 NuGot 版本是 2.6.0.0 版本。运行时版本也不同(v4.0.30319是通过NuGetting“Open XML Format SDK”安装的,但是我手动添加的DLL版本是2.5.5631.0,Runtime Version v4.0.30319
根据this,我收集到我应该通过将<AutoGenerateBindingRedirects>false</AutoGenerateBindingRedirects> 更改为true 来编辑.csproj 文件-但那里不存在AutoGenerateBindingRedirects。
我不知道我是否应该添加它,如果是的话(在哪个“块”中)。我更喜欢安全地玩它并缓解警告引擎。如何确保 OpenXml 程序集不会引起冲突?
【问题讨论】:
标签: nuget openxml openxml-sdk csproj spreadsheetlight