我是Nugot SpreadsheetLight。要随后使用它,我需要添加以下用法:
using DocumentFormat.OpenXml;
using DocumentFormat.OpenXml.Spreadsheet;
using SpreadsheetLight;
对于要识别的前两个(" DocumentFormat"),我还需要NuGet Microsoft的#34; Open XML Format SDK"
我得到了最新版本,2.5
然而,即使在那时,我得到了一个关于需要引用它的错误信息:
类型' DocumentFormat.OpenXml.Spreadsheet.InlineString'在未引用的程序集中定义。您必须添加对程序集的引用' DocumentFormat.OpenXml,Version = 2.0.5022.0,Culture = neutral,PublicKeyToken = 31bf3856ad364e35'。
这行SpreadsheetLight代码激发了msg:
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,运行时版本v4.0.30319
根据this,我收集到我应该通过将<AutoGenerateBindingRedirects>false</AutoGenerateBindingRedirects>
更改为true来编辑.csproj文件 - 但是那里不存在AutoGenerateBindingRedirects。
我不知道是否应该添加它,如果是的话(其中&#34;阻止&#34;)。我更喜欢安全地玩它并安抚警告引擎。如何确保OpenXml程序集不会引起冲突?
答案 0 :(得分:4)
确定警告(以便它落入日落)是将DocumentFormat.OpenXML的版本降级到版本2.0.5022.0(运行时版本v2.0.50727)
我发现了这个,因为这个代码来自“Hello World”示例here。
SLDocument sl = new SLDocument();
sl.SetCellValue("A1", true);
. . .
...在第一行失败,“无法加载文件或程序集'DocumentFormat.OpenXml,Version = 2.0.5022.0,Culture = neutral,PublicKeyToken = 31bf3856ad364e35'或其中一个依赖项“
因此,由于它期待版本2.0,我删除了该文件的2.5.5631.0,然后取而代之的是NuGot“OpenXML SDK 2.0”。这是版本2.0.5022.0和运行时版本v2.0.50727
所以:毕竟不需要使用奥术布尔属性更新项目文件。
但是,它给了我一些幻想,不得不使用较旧版本的程序集。
使用DocumentFormat.OpenXml“复古”的必要性得到了证实here。
答案 1 :(得分:2)
可以通过将DocumentFormat.OpenXml
从版本2.0.5022.0重定向到更新版本(例如版本2.5.5631.0
)来解决问题。要执行此操作,应在web.config
中添加新的<dependentAssembly>
项:
<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>
答案 2 :(得分:1)
Spreadsheetlight自版本3.4.5开始与DocumentFormat.OpenXml 2.5一起使用:
“版本3.4.5 -SmartTags现在已从考虑中删除(现在还不那么聪明,对吗?;)。这意味着代码现在可以用于Open XML SDK 2.5!是的,它现在可以与Open XML SDK 2.5一起使用(我是否提到过?大声笑)”