我的项目目前以 .Net Framework 4.5.2 为目标并使用 Microsoft EnterpriseLibrary.Data 5.0.505.0。如果我将项目目标更改为 .Net Framework 到 4.7.2,我会收到错误消息
'System.IO.FileNotFoundException: '无法加载文件或程序集 'Microsoft.Practices.EnterpriseLibrary.Data,版本=5.0.505.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35' 或其之一 依赖项。系统找不到指定的文件。'
Microsoft.Practices.EnterpriseLibrary.Data 被项目引用并且与错误中列出的版本相同,如果我将目标框架改回 4.5.2 我没有这个问题。 .net 4.5.2 和 EnterpriseLibrary v5 之间是否存在兼容性问题?
我能够通过将 Microsoft.Practices.EnterpriseLibrary.Data 文件复制到我的项目可执行文件夹来解决这个问题,在我的例子中是 /bin/Debug/ 。
尽管我的参考文献将“复制本地”设置为 true,但文件未被复制。我仍然不清楚为什么将目标框架更改为 .Net 4.5.2.
时没有出现问题.NET Framework 4.5.2 和 Enterprise Library Data 5.0.505.0 之间没有已知的兼容性问题。但是,您可以尝试一些方法来解决您遇到的
FileNotFoundException
错误:
检查
Microsoft.Practices.EnterpriseLibrary.Data.dll
文件是否存在于项目的输出目录中。如果不是,请尝试清理并重建项目以确保文件已复制到输出目录。
检查
Copy Local
引用的 Microsoft.Practices.EnterpriseLibrary.Data
属性是否设置为 True
。这将确保程序集在构建期间被复制到输出目录。
检查您的项目或其依赖项中的
Microsoft.Practices.EnterpriseLibrary.Data
程序集是否没有冲突版本。您可以使用 Assembly Binding Log Viewer
工具来诊断任何程序集绑定问题。
尝试将企业库数据包更新到与 .NET Framework 4.7.2 兼容的更新版本。您可以查看软件包的文档或发行说明,看看您的目标框架是否存在任何已知的兼容性问题。
如果这些解决方案都不起作用,您可能需要通过检查
FileNotFoundException
错误的堆栈跟踪并检查项目构建输出中的任何其他相关错误消息或警告来进一步调查问题。