我有一个孤立的类库项目,这是一个非常大的解决方案的一部分,该解决方案执行各种Azure Media服务功能、上传资产、编码等。
我已经将这个类库用作对解决方案中其他项目的项目引用,但是当我尝试从我的主要web应用程序(web表单)引用这个库并调用AMS函数时,它尝试加载一个完全无关的程序集(水晶报告)。
只有在使用Linq表达式时才会发生这种情况,例如,通过Asset搜索Id:
var assetInstance = from a in _context.Assets
where a.Id == assetId
select a;
// Reference the asset as an IAsset.
asset = assetInstance.FirstOrDefault();当进行.FirstOrDefault()调用时,我在这里得到一个FileNotFoundException
'BusinessObjects.Enterprise.Sdk.ZipLib.netmodule‘:“无法加载文件或程序集System.IO.FileNotFoundException或其依赖项之一。找不到指定的模块。
我的主要web应用程序项目确实有水晶企业引用,异常中指出的文件确实存在于/bin目录中,这使得它变得更加奇怪。
有人知道为什么Linq扩展方法会导致对完全无关的程序集进行查找吗?
编辑7月18日/18日仍未解决,但我尝试了以下操作:-删除所有的水晶企业2016引用:代码工作-重新添加的水晶引用返回:代码工作-重新添加的水晶实现代码,并且我得到了关于不能嵌入互操作的错误,所以我需要将嵌入的互操作类型更改为False,一旦我这样做,它就会将其他的DLL和.netmodule文件引入到我的/bin文件夹中,一旦发生这种情况,错误就会再次出现,我又回到了正方形1。
发布于 2018-07-20 20:50:17
我设法解决了这个问题,以防其他人遇到类似的事情。
为了澄清,我不认为这个问题与水晶报道或Azure媒体服务有任何具体的关系。
这归结为一个简单的版本控制问题,即安装了用于水晶企业的引用,web项目的参考位置与安装的Crystal enterprise不同,只是一个小的增量构建修订版。
我仍然无法解释是什么导致Linq扩展方法加载一个无关的水晶企业程序集,但问题是,与项目中引用的DLL相比,/bin目录中拖出了一个不同的DLL。
https://stackoverflow.com/questions/51390467
复制相似问题