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

.net 4.0 Microsoft POS for.NET和.NET 4.0在调试时挂起,.net-4.0,pos-for-.net,.net 4.0,Pos For .net,我试图在.NET4.0应用程序中使用POS for.NET库,但遇到了一些问题。第一个是许多人似乎遇到的“CAS政策”例外。因此,我按照微软的建议,在app.config文件中添加了NetFx40_LegacySecurityPolicy=true条目 不过,我现在看到的一个问题是,当我连接了调试器并尝试构建一个新的PosExplorer时,构造函数挂起。如果在我创建调试器时将其分离,那么一切似乎都很好,此时我可以重新连接,一切正常 有人知道是什么导致了这种行为吗?希望我能做些什么来纠正它?我开

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

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


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

我开始使用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库时挂起


应用此问题的修复:解决了问题。我们已经使用这个技巧在.NET 4中使用MDX,但是我没有在本例中应用app.config设置,因为我正在编写一个独立的应用程序来熟悉PoS。。。没想到我会尝试加载DirectX:

.NETFramework4及以上版本并不总是能很好地使用早期版本的框架。创建.NET 3.5程序集实例时,一个常见问题是.NET 4.0挂起

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

<startup useLegacyV2RuntimeActivationPolicy ="true" ><supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.5"/></startup>
可能还想查看更多关于.NET4中POS for.NET可能出现问题的信息