C# 如何在Mono2.10上包含DocumentFormat.OpenXml.dll的引用?
我正在使用C#.net Windows桌面应用程序。我还想在其他平台上运行这些应用程序。因此,我使用Mono 2.10作为交叉编译器 错误:无法打开所选文件夹。C# 如何在Mono2.10上包含DocumentFormat.OpenXml.dll的引用?,c#,mono,openxml-sdk,moma,C#,Mono,Openxml Sdk,Moma,我正在使用C#.net Windows桌面应用程序。我还想在其他平台上运行这些应用程序。因此,我使用Mono 2.10作为交叉编译器 错误:无法打开所选文件夹。 无法加载文件或程序集“DocumentFormat.OpenXml.dll,version=2.0.5022.0,culture=neutral,PublicKeyToken=31bf3856ad364e35”或其依赖项之一。 我不知道这里有什么问题…我已经在c:\program files\open xml sdk\v2\lib\Do
无法加载文件或程序集“DocumentFormat.OpenXml.dll,version=2.0.5022.0,culture=neutral,PublicKeyToken=31bf3856ad364e35”或其依赖项之一。 我不知道这里有什么问题…我已经在c:\program files\open xml sdk\v2\lib\DocumentFormat.openxml.dll上安装了openxml sdk2.0 并将我的应用程序eXe放在同一个地方进行测试
请指导我解决此问题…您还应确保设置了对
WindowsBase
的引用。这是使用SDK处理System.IO.Packaging
(用于解压缩和打开压缩的.docx/.xlsx/.pptx作为OPC文档)时所必需的。如果您正在开发ASP.NET应用程序,则需要将DocumentFormat.OpenXML.dll与应用程序放在同一文件夹中,或者放在“bin”路径中。但是,我不确定OpenXMLSDK是否在非Windows操作系统上受支持—您可能需要研究第三方解决方案
是的,这个答案是正确的,唯一的区别是将.dll复制到项目的bin文件夹中。选择“引用”下的DocumentFormat.OpenXml,查看其属性,并将“复制本地”选项设置为True,以便将其复制到输出文件夹。这对我很管用 在我的应用程序中,我只需要在.Net选项卡下添加对“DocumentFormat.OpenXml”的引用,这两个引用(DocumentFormat.OpenXml和WindowsBase)总是自动添加的。但它们不包括在Bin文件夹中。因此,当应用程序发布到外部服务器时,我总是手动将DocumentFormat.OpenXml.dll放在Bin文件夹下。或者将reference“Copy Local”属性设置为true。我本人对此并不熟悉,下面是我所做的: 我正在使用MS Visual Studio 2010 Pro
您现在应该关闭并使用DocumentFormat类运行。查看并将属性更改为DocumentFormat.OpenXml后,我还必须将特定版本更改为false。对我有效的方法:
ThirdParty
文件夹中添加DocumentFormat.OpenXML.dll
和WindowsBase.dll
ThirdParty
dir作为两个DLL的参考转到Nuget软件包管理器,搜索openxml。并安装DocumentFormat.openxml。我发现,当与PCL库混合使用时,出现了上述问题,虽然WindowsBase库确实包含System.IO.Packaging,但我使用的是OpenXMLSDK MOT 2.6.0.0库,该库本身提供了自己的physi文件副本cal System.IO.Packaging library。我缺少的参考可以在csharp项目中找到,如下所示
<Reference Include="System.IO.Packaging, Version=1.0.0.0, Culture=neutral, processorArchitecture=MSIL">
<HintPath>..\..\..\..\packages\OpenXMLSDK-MOT.2.6.0.0\lib\System.IO.Packaging.dll</HintPath>
<Private>True</Private>
</Reference>
..\..\..\..\packages\OpenXMLSDK MOT.2.6.0.0\lib\System.IO.Packaging.dll
真的
我将XMLSDK的版本降级为2.6,这似乎为我解决了这个问题。但是你可以看到有一个物理汇编System.IO.Packaging.dll我的问题是全局汇编缓存(GAC)中存在
DocumentFormat.OpenXml.dll
因此,当在VS2013中发布我的项目时,它在GAC中找到了该文件,因此在复制到发布文件夹时忽略了该文件
解决方案:从GAC中删除DLL
%windir%\Microsoft.NET\assembly
)OpenXml
gacutil–u DocumentFormat.OpenXml.dll
希望有帮助!我已经在C#Net(4.0)中设置了WindowsBase的参考通过project explorer窗口。但在我无法解决该问题之前…我下一步要做什么?如果解决方案中有多个项目,请尝试将其包含到其他项目中。可能是您包含到了错误的项目中。我没有指定
System.IO.Packaging
这很奇怪,用户会出现运行时错误。当您开始如果要在cod中使用像SpreadsheetDocument
这样的类,编译器本身就会开始给出错误。在运行时,它应该从全局程序集缓存(GAC)中选择WindowsBase.dll
.Net Framework的。我已在VisualStudio 2017网站项目中成功使用此解决方案。目前,我将.Net引用程序集从\Program Files(x86)\reference assembly\Microsoft\Framework\.NETFramework\.dll复制到我网站的/bin文件夹。