【问题标题】:System.Data Assembly Not foundSystem.Data 程序集未找到
【发布时间】:2012-05-17 19:04:43
【问题描述】:

我在我的 Windows 服务项目中引用了 System.Data。我不断收到Exception

无法加载文件或程序集“System.Data,Version=4.0.0.0,Culture=neutral,PublicKeyToken=b77a5c561934e089”或其依赖项之一。系统找不到指定的文件。

我将FusionLog 附加到我的代码中并发现了以下内容。对于System.Data,只有视觉工作室在看这里:

程序集管理器加载自:C:\windows\Microsoft.NET\Framework\v2.0.50727\mscorwks.dll

它应该在这里看(所有其他程序集都是 System.Data)

程序集管理器加载自:C:\windows\Microsoft.NET\Framework\v4.0.30319\clr.dll

如何将我的System.Data 文件指向正确的位置?

我的猜测是Microsoft Commerce Server dll 可能正在引用 2.0 文件夹。

【问题讨论】:

    标签: c# .net-assembly system.data


    【解决方案1】:

    将此添加到 app.config..

      <startup useLegacyV2RuntimeActivationPolicy="true">
        <supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.0" />
      </startup>
    

    如果您需要在 Windows 服务中加载旧版本的 dll,您必须添加它。对于 web 服务,iis 会自动处理它,但对于 windows 服务则不会。

    【讨论】:

    • 我的 .Net 3.5 项目也有同样的问题,甚至在上面添加了 useLegacyV2RuntimeActivationPolicy。但是我仍然可以在调试运行时在 Visual Studio 输出窗口中观察到“找不到 System.Data”异常作为第一次机会异常。但是,除此之外,我的应用程序运行正常。
    【解决方案2】:

    确保您的项目设置为 .Net Framework 4。如果不这样做,请将其设置为完整配置文件(不仅仅是客户端)

    【讨论】:

    • @NickLaMarca 那么完整的框架安装在客户端了吗?
    • 完整性检查 - 你能找到文件 C:\Program Files (x86)\Reference Assemblies\Microsoft\Framework\.NETFramework\v4.0\System.Data.dll 吗?
    • 文件夹v4.0.30319安装在我的机器上
    • 是的,我在这里看到 System.Data.dll:C:\Program Files\Reference Assemblies\Microsoft\Framework\.NETFramework\v4.0
    • 你的 web.config 中有 吗?
    【解决方案3】:

    如果您在解决方案资源管理器中选择引用的程序集,请验证运行时版本是否正确(参见下图)。如有必要,您可以删除引用并重新添加以修复它。

    此外,如果您使用的是 app.config,请确保它针对的是正确的运行时版本。

    【讨论】:

    • 我已验证解决方案中所有项目中的所有 System.Data dll 都具有 4.0 运行时版本,并且应用配置针对 4.0
    猜你喜欢
    • 2017-10-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多