2011-04-26 51 views
0

我試圖在.NET 4.0應用程序中使用POS庫.NET庫,並遇到一些問題。首先是很多人似乎遇到的'CAS政策'例外。所以我已經按照Microsoft的建議將NetFx40_LegacySecurityPolicy = true條目添加到我的app.config文件中。.NET和.NET 4.0的Microsoft POS在調試時掛起

我現在看到的一個問題是,當我連接調試器並嘗試構造一個新的PosExplorer時,構造函數掛起。如果調試器在創建時被分離,那麼一切似乎都沒有問題(並且我可以重新附加在這一點上,一切正常)。

有沒有人有什麼可能導致這種行爲的想法,並希望我能做些什麼來糾正它?

回答

0

我開始調試到POS庫使用反射Pro和發現有人陷在這種方法:

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解決了問題。我們已經使用這個技巧來使用.NET 4的MDX,但是我沒有在這種情況下應用app.config設置,因爲我正在編寫一個獨立的應用程序來熟悉PoS ......沒有預料到我將嘗試加載DirectX :)

+1

可能也想看看http://blog.lavablast.com/post/2011/06/06/Using-Microsoft -POS-for-NET-in-2011.aspx有關.NET 4中的.NET for POS可能出錯的更多信息 – 2011-06-06 15:57:02

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>