2016-09-06 102 views
1

希望有人能夠提供幫助。當引用.net標準類庫時找不到System.Runtime程序集

我收集了近期已轉換成.NetStandard 1.3 PCL的項目,這是爲了讓我公司的前端項目與新移動項目(Xamarin)共享通信層。

當我們的WPF項目中引用這些新的PCL時,一切運行正常,但在我們的ASP.net項目中引用它們會導致運行時異常。 Runtime Exception

我發現這是由於System.Runtime.dll沒有在構建過程中輸出到項目的bin文件夾。

我試過直接在項目中引用System.Runtime的Nuget包,但仍然沒有。 經過一些調查/黑客攻擊後,我發現如果我從Nuget包複製(正確的)System.Runtime.dll並手動將其粘貼到bin中,則會加載所有內容。

因此,我創建了一個後期構建事件,它發現並複製了丟失的dll到bin,但dll仍然從我們的部署包中排除。

有沒有辦法在構建過程中將所需的dll輸出到bin目錄,就像我的其他依賴項一樣?

我已閱讀.NetStandard和谷歌搜索這個問題的文檔,但沒有設法找到任何有幫助的。

回答

1

我有完全相同的問題 - 我浪費了大約5個小時試圖用配置文件和包裹的NuGet鼓搗,才意識到令我懊惱的是System.Runtime.DLLSystem.Runtime.Extensions.DLL是不存在bin目錄。

如果我有任何突破,我會回信。

- 編輯:我不知道這是否會對您有所幫助,但我決定從廣場開始,然後重新創建PCL項目,然後重新添加到解決方案中。我將PCL設置爲netstandard1.3;這裏是我project.json爲PCL:

{ 
    "name": "<redacted>", 
    "version": "1.0.0-*", 
    "supports": { 
    "net46.app": {} 
    }, 
    "dependencies": { 
    "Microsoft.NETCore.Portable.Compatibility": "1.0.1", 
    "NETStandard.Library": "1.6.0", 
    "Newtonsoft.Json": "9.0.1" 
    }, 
    "frameworks": { 
    "netstandard1.3": { 
     "imports": "portable-net46+win8" 
    } 
    } 
} 

這樣做,然後通過IDE添加引用之後,我沒有得到的裝配誤差不再。我也可以將這個PCL鏈接到我的.NET Core 1.0應用程序中。

希望這會有所幫助。

+0

PS。我發現這個工具非常有幫助;您只能觀察失敗的程序集綁定,然後查看加載程序在處理時嘗試的路徑的確切列表:[link](http://www.hanselman.com/blog/BackToBasicsUsingFusionLogViewerToDebugObscureLoaderErrors.aspx) – Rimmel

相關問題