WindowsBase.dll静态位置

时间:2016-07-21 11:06:59

标签: c# windows dll openxml-sdk gac

我正在使用OpenXML SDK将数据写入excel文件。现在,这在我的开发机器上运行良好。

上周,我们将代码带到生产服务器,正如预期的那样,它没有安装OpenXML DLL。为了使它正常工作,我需要服务器上有两个DLL - 1. DocumentFormat.OpenXml.dll和2.Windowsbase.DLL。我在C盘中创建了一个文件夹,并将这些DLL放入其中。假设我将它们放在文件夹C:\ OpenXML

由于某种原因,我的DocumentFormat.OpenXml.dll解决方案中的引用正确指向C:\ OpenXML \ DocumentFormat.OpenXml.dll但WindowsBase指向位置C:\ Program Files(x86)\ Reference Assemblies \微软\ Framework.NETFramework \ V4.0 \ WindowsBase.dll中。我从DEV机器上检查了location属性。然后我在C盘中快速搜索了WindowsBase,它带来了很多DLL的副本。所以我尝试一个接一个地添加它们,但WindowsBase仍然指向C:\ Program Files(x86)\ Reference Assemblies \ Microsoft \ Framework.NETFramework \ v4.0 \ WindowsBase.dll。在DEV工作站上,它工作正常。但是,在服务器上,位置C:\ Program Files(x86)\ Reference Assemblies \ Microsoft \ Framework.NETFramework \ v4.0 \ WindowsBase.dll不存在,我的解决方案失败。

不确定为什么WindowsBase始终只指向静态位置。如果有灵活性,我可以将它放在服务器的某个文件夹中并引用它而不会出现任何问题(就像我为其他库DocumentFormat.OpenXML.DLL所做的那样)。有什么方法吗?

1 个答案:

答案 0 :(得分:2)

我的问题出在其他地方。这与我加载的DocumentFormat.OpenXML.dll版本有关。我试图在.NET 4中使用适用于.NET 3.5的DLL。

我对WindowsBase的理解最初是错误的。 C:\ Program Files(x86)\ Reference Assemblies \ Microsoft \ Framework.NETFramework \ v4.0 \由Visual Studio用于引用共享库。在服务器上,没有Visual Studio,解决方案将指向GAC。因此,如果库存在于GAC中就足够了。

Simon在Missing Referenced Assemblies Folder for .NET 4.0的回答中的以下摘录解释了这一点。

  

Reference Assemblies文件夹与Visual Studio一起使用。虽然   实际部署的应用程序将使用GAC   C:\ WINDOWS \ Microsoft.Net \大会。我假设你没有安装   您的服务器上的Visual Studio,因此您将没有   参考装配文件夹。

理解这有助于我解决问题。希望这有助于其他人。

相关问题