B. *_*non 6 csproj openxml openxml-sdk nuget spreadsheetlight
我 Nugot SpreadsheetLight。为了随后使用它,我需要添加以下用途:
using DocumentFormat.OpenXml;
using DocumentFormat.OpenXml.Spreadsheet;
using SpreadsheetLight;
Run Code Online (Sandbox Code Playgroud)
为了识别前两个(“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
Run Code Online (Sandbox Code Playgroud)
因此,我从我的项目中删除了我拥有 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 安装作为参考的那个 DLL 是 2.6.0.0 版本,运行时版本也不同(v4.0.30319 是由NuGetting“Open XML Format SDK”,但是我手动添加的DLL版本是2.5.5631.0,Runtime Version v4.0.30319
根据这个,我得知我应该改变编辑的.csproj文件<AutoGenerateBindingRedirects>false</AutoGenerateBindingRedirects>为真-但AutoGenerateBindingRedirects不存在那里。
我不知道我是否应该添加它,如果是(在哪个“块”中)。我更喜欢谨慎行事并减轻警告引擎的影响。如何确保 OpenXml 程序集不会引起冲突?
缓解该警告(使其消失)是将 DocumentFormat.OpenXML 的版本降级到版本 2.0.5022.0(运行时版本 v2.0.50727)的问题
我发现了这一点,因为此代码来自“Hello World”示例here。
SLDocument sl = new SLDocument();
sl.SetCellValue("A1", true);
. . .
Run Code Online (Sandbox Code Playgroud)
...在第一行失败,“无法加载文件或程序集 '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 来“复古”的需要。
| 归档时间: |
|
| 查看次数: |
5488 次 |
| 最近记录: |