【问题标题】:Microsoft POS for .NET and .NET 4.0 hangs when debuggingMicrosoft POS for .NET 和 .NET 4.0 在调试时挂起
【发布时间】:2013-04-26 16:13:52
【问题描述】:

我正在尝试在 .NET 4.0 应用程序中使用 POS for .NET 库,但遇到了一些问题。第一个是很多人似乎遇到的“CAS 政策”例外。因此,我按照 Microsoft 的建议将 NetFx40_LegacySecurityPolicy=true 条目添加到了我的 app.config 文件中。

我现在看到的一个问题是,当我连接了调试器并尝试构造一个新的 PosExplorer 时,构造函数挂起。如果调试器在我创建时已分离,那么一切似乎都很好(此时我可以重新连接,一切正常)。

有没有人知道是什么导致了这种行为,希望我能做些什么来纠正它?

【问题讨论】:

    标签: .net-4.0 pos-for-.net


    【解决方案1】:

    我开始使用 Reflector Pro 调试 PoS 库,发现它卡在了这种方法中:

    private static ServiceObjectCollection ScanFolder(string path, Dictionary<string, string> posAssemblies)
    {
      Logger.Info("AssemblyLoader", "Scanning folder " + path + " for SO assemblies.");
      ServiceObjectCollection serviceobjects = new ServiceObjectCollection();
      DirectoryInfo info = new DirectoryInfo(path);
      Logger.Info("AssemblyLoader", "Enumerating files in " + path);
      foreach (FileInfo info2 in info.GetFiles())
      {
        LoadFile(info2, posAssemblies, serviceobjects);
      }
      Logger.Info("AssemblyLoader", "Leaving ScanFolder.");
      return serviceobjects;
    }
    

    它试图加载工作目录中的每个程序集以扫描 PoS 对象...它在尝试加载我们的应用程序也使用的旧托管 DirectX 库时挂起。

    应用此问题的修复程序:Managed DirectX running from .Net Framework 4.0 app dont hunt 解决了问题。我们已经使用这个技巧将 MDX 与 .NET 4 一起使用,但是我没有在这种情况下应用 app.config 设置,因为我正在编写一个独立的应用程序来熟悉 PoS……没想到我将尝试加载 DirectX :)

    【讨论】:

    【解决方案2】:

    .NET Framework 4 及更高版本并不总是能很好地与早期版本的框架配合使用。一个常见问题是在创建 .NET 3.5 程序集的实例时 .NET 4.0 挂起。

    要解决此问题,请将以下内容添加到您的 app.config:

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

    【讨论】:

      猜你喜欢
      • 2011-11-06
      • 2012-09-03
      • 1970-01-01
      • 2011-03-02
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多