2017-05-25 169 views
1

我有一個.NET Core控制檯應用程序和一個.NET Core類庫。兩者都非常簡單,單一課程項目。兩者都是新建的,全新安裝最新的.NET Core。兩者均以.NET Core 1.1爲目標。當在.NET核心應用程序中引用DLL時FileNotFoundException

此錯誤發生在運行時,每當我包括在應用程序中的.NET核心類庫:

System.IO.FileNotFoundException:找不到「無法加載文件或組件 」名稱,版本= 1.0.0.0 ,Culture = neutral,PublicKeyToken = null'。 系統找不到指定的文件。

構建任一項目都沒有問題,Intellisense在包含using...語句後向我顯示類庫的內容。有了編寫的參考和代碼,編譯時就沒有問題了。

我已將Copy Local設置爲Yes作爲控制檯應用程序中引用的程序集。引用的DLL在運行時存在於控制檯應用程序的bin文件夾中。

這裏是csproj參考:

<Reference Include="NAME"> 
    <HintPath>path\bin\Debug\netcoreapp1.1\NAME.dll</HintPath> 
    <Private>true</Private> 
    <SpecificVersion>false</SpecificVersion> 
</Reference> 

這僅與.NET的DLL的核心發生了,我絕對沒有問題,用的.NET Framework 4.5 *及以上。

有人能解釋一下這個問題嗎?我發現有關這個的任何SO/MSDN頁面都是特定的問題,例如針對不正確版本的DLL,這沒有幫助。

+0

使用.NetCore 2.0。你將能夠找到它的支持。預覽版已可用。 https://www.microsoft.com/net/core/preview#windowscmd –

回答

5

使用2.0以前版本的工具不支持在.NET Core應用程序中引用DLL文件。

原因是依賴關係圖(deps.json文件)生成不包括這些文件,並且很可能無法正常工作,因爲它無法合併引用的DLL的引用/依賴關係。

對於即將發佈的2.0版本,只要您還引用了原始軟件包使用的所有DLL /軟件包,此方案就應該可以工作。語法是:

<Reference Include="path/to/my.dll" /> 

.NET核2.0還將支持引用已建成.NET 4.6.1這樣組件,但如果DLL使用不支持的API調用它在運行時可能會失敗。

+2

我實際上也有.net核心2.0的這個問題。只有asp.net項目,控制檯項目工作正常。 – irperez

1

不知道這是否會算作修復,但至少是一種解決方法。

與其引用DLL我只是簡單地將類庫的項目添加到控制檯應用程序中,在控制檯應用程序中包含對類庫項目的依賴項引用,並清除/重建。工作正常。

顯然這不是專有DLL的修復程序,但可能有所幫助。

相關問題