调试时,Microsoft POS for .NET和.NET 4.0挂起

时间:2011-04-26 18:48:38

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

我正在尝试在.NET 4.0应用程序中使用POS for .NET库,但我遇到了一些问题。第一个是许多人似乎遇到的“CAS政策”例外。所以我已经将微软推荐的NetFx40_LegacySecurityPolicy = true条目添加到我的app.config文件中。

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

是否有人知道可能导致此行为的原因,并希望我能做些什么来纠正它?

2 个答案:

答案 0 :(得分:0)

我开始使用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对象时...它在尝试加载我们的应用程序也使用的旧Managed DirectX库时挂起。

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

答案 1 :(得分:0)

.NET Framework 4及更高版本并不总能与早期版本的框架兼容。在创建.NET 3.5程序集的实例时,常见的问题是.NET 4.0挂起。

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

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