我正在使用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 \ DocumentFormat.OpenXml.dll上安装了openxml sdk2.0。
并将我的应用程序eXe放在同一个地方进行测试...
请指导我解决这个问题...
答案 0 :(得分:21)
您还应确保设置对WindowsBase
的引用。这需要在处理System.IO.Packaging
时使用SDK(用于解压缩并打开压缩的.docx / .xlsx / .pptx作为OPC文档)。
答案 1 :(得分:18)
我自己也是新手,这就是我所做的:
我正在使用MS Visual Studio 2010 Pro。
现在应该使用DocumentFormat类关闭并运行。
答案 2 :(得分:7)
在引用下选择DocumentFormat.OpenXml,查看其属性,并将Copy Local选项设置为True,以便将其复制到输出文件夹。这对我有用。
答案 3 :(得分:6)
转到Nuget包管理器并搜索openxml。并安装DocumentFormat.OpenXml
答案 4 :(得分:3)
对我有用的是什么:
ThirdParty
。ThirdParty
文件夹中添加DocumentFormat.OpenXML.dll
和WindowsBase.dll
ThirdParty
目录作为两个DLL的参考答案 5 :(得分:1)
好吧,在我的应用程序中,我只需要在.Net选项卡下添加对“DocumentFormat.OpenXml”的引用,并且两个引用(DocumentFormat.OpenXml和WindowsBase)总是自动添加。但它们不包含在Bin文件夹中。因此,当应用程序发布到外部服务器时,我总是手动将DocumentFormat.OpenXml.dll放在Bin文件夹下。或者将引用“Copy Local”属性设置为true。
答案 6 :(得分:0)
您需要将DocumentFormat.OpenXML.dll放在与应用程序相同的文件夹中 - 或者在' bin'路径,如果您正在开发ASP.NET应用程序。但是,我不确定非Windows操作系统是否支持OpenXML SDK - 您可能需要查看第三方解决方案。
是的,这个答案是对的,唯一的区别是你将.dll复制到项目的bin文件夹中。
答案 7 :(得分:0)
查看并将属性更改为DocumentFormat.OpenXml后,我还必须将特定版本更改为false。
答案 8 :(得分:0)
我发现当与PCL库混合时,上面的问题就出现了,虽然WindowsBase库确实包含System.IO.Packaging我使用的是OpenXMLSDK-MOT 2.6.0.0库,它本身提供了自己的副本物理System.IO.Packaging库。在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>
我将我的XMLSDK版本降级为2.6,然后似乎解决了这个问题。但是你可以看到有一个物理组件System.IO.Packaging.dll
答案 9 :(得分:0)
对我来说,问题是我的Win7开发盒上的全局程序集缓存(GAC)中存在DocumentFormat.OpenXml.dll
。因此,当在VS2013中发布我的项目时,它在GAC中找到了该文件,因此将其忽略为复制到发布文件夹。
解决方案:从GAC中删除DLL。
%windir%\Microsoft.NET\assembly
)OpenXml
可能有更合适的方法来删除GAC文件(如下所示),但这就是我所做的并且有效。
gacutil –u DocumentFormat.OpenXml.dll
希望有所帮助!