2016-05-23 48 views
8

我目前使用的是假設支持引用從核心MVC Web應用程序項目一個完整的框架庫項目ASP.NET MVC核心RC2。但我似乎無法讓它工作。從ASP.NET核心MVC Web應用程序(RC2)引用完整框架庫項目?

我已有一個完整的框架庫項目,我想用一個新的核心MVC的Web應用程序項目中使用。但是當我嘗試添加對庫項目的引用時,我得到一個錯誤,指出它的目標框架與Web應用程序的目標框架不兼容。

要儘量簡化我創建了一個新的核心MVC Web應用程序和新的Windows代碼庫,並嘗試添加從Web應用程序項目庫的項目引用,並得到了相同的錯誤消息的問題。我搜索了堆棧溢出,我發現這個問題看起來非常相關:How to make ASP.NET Core RC2 app build on net46 framework with older third party dependencies但我無法使用那裏的信息來解決我的問題。

下面是重現該問題的步驟:
我創建了一個帶有「.NET的核心」,‘核心ASP.NET Web應用程序的解決方案’項目的基礎上,‘在Visual Studio 2015年的Web應用程序’模板。

[pic 1

[pic 2

我再添加了一個新的 「Windows」, 「類庫」 項目的解決方案。

enter image description here

所以在這一點的解決方案是這樣的:

pic 4

現在,當我嘗試使用Visual Studio從核心MVC Web應用程序添加到完整的框架參考庫我得到一個錯誤,指出「ExampleLib具有與當前項目ExampleWebApplicaiton中的目標不兼容的目標框架」。:

enter image description here

這個錯誤似乎相當自我解釋,好像要我改變Web應用程序的目標是使這是一樣的圖書館,這是非常合情合理的框架。問題是,我找不到如何做到這一點的文檔,而智能感知不是特別有用。

我懷疑我需要改變以下的project.json文件的分片的Web應用程序之一:

"dependencies": { 
    "Microsoft.NETCore.App": { 
    "version": "1.0.0-rc2-3002702", 
    "type": "platform" 
    }, 

"frameworks": { 
    "netcoreapp1.0": { 
     "imports": [ 
     "dotnet5.6", 
     "dnxcore50", 
     "portable-net45+win8" 
     ] 
    } 
    }, 

如何指定.NETFramework 4.6版的核心MVC Web應用程序而不是.NETCoreApp?

回答

4

有一個模板允許您定位完整的.NET框架 - 抱歉,無法發佈圖片,但您可以訪問: 模板 - > Visual C# - > Web - > ASP.NET Core Web應用程序(.NET框架)

請注意,您可以指定的版本。從上面的下拉列表(按照慣例)。 (取決於你所選擇的框架版本)

"frameworks": { 
"net461": { } 
} 

這將您project.json改變。您現在可以添加對您的類庫的引用。

"frameworks": { 
    "net461": { 
    "dependencies": { 
    "ClassLibrary1": { 
     "target": "project" 
     } 
    } 
    } 
} 
+0

我一直在充實與別人微軟在這個線程https://github.com/aspnet/Tooling/issues/45名爲abpiskunov的做法,但我喜歡你的方法更好,如果我能得到它工作。當我在New Project對話框的下拉列表中選擇「.NET Framework 4.5.1」並選擇ASP.NET Core Web App時,project.json似乎忽略它幷包含「frameworks」:{「netcoreapp1.0」 「:{ 「進口」:[ 「dotnet5.6」, 「dnxcore50」, 「便攜式-net45 + win8的」 ] } }, –

+1

但是,如果我手動編輯project.json構架部分以包括「net461」,然後從文件頂部的依賴關係部分中刪除'「Microsoft.NETCore.App」,然後手動恢復包,然後使用Visual Studio添加我的項目引用,然後手動恢復包,我可以獲取它工作。理論上,最後一次手動還原軟件包不是必需的,但在我的設置中,出於某種原因尚不清楚。 –

+0

另外還有一點需要注意的是,對於我來說,使用這種方法來引用Windows類庫項目只有在項目是使用RC2工具與我的Visual Studio 2015 Update 2一起創建的時候才起作用,但它在多年前創建的Windows類庫項目中不起作用。解決方法?創建一個新的Windows類庫項目,將現有的代碼文件添加到它,現在VS將允許使用上面的答案和我的意見中的步驟引用它。乾杯! –

1

繼羅恩C'S步驟這裏是我剛剛測試的Web API項目的完整project.json和它的工作。

{ 
    "dependencies": { 
    "Microsoft.AspNetCore.Mvc": "1.0.0", 
    "Microsoft.AspNetCore.Server.IISIntegration": "1.0.0", 
    "Microsoft.AspNetCore.Server.Kestrel": "1.0.0", 
    "Microsoft.Extensions.Configuration.EnvironmentVariables": "1.0.0", 
    "Microsoft.Extensions.Configuration.FileExtensions": "1.0.0", 
    "Microsoft.Extensions.Configuration.Json": "1.0.0", 
    "Microsoft.Extensions.Logging": "1.0.0", 
    "Microsoft.Extensions.Logging.Console": "1.0.0", 
    "Microsoft.Extensions.Logging.Debug": "1.0.0", 
    "Microsoft.Extensions.Options.ConfigurationExtensions": "1.0.0" 
    }, 

    "tools": { 
    "Microsoft.AspNetCore.Server.IISIntegration.Tools": "1.0.0-preview2-final" 
    }, 

    "frameworks": { 
    "net461": { 
     "imports": [ 
     "dotnet5.6", 
     "portable-net45+win8" 
     ], 
     "frameworkAssemblies": { 
     "System.Data": "4.0.0.0" 
     } 
    } 
    }, 

    "buildOptions": { 
    "emitEntryPoint": true, 
    "preserveCompilationContext": true 
    }, 

    "runtimeOptions": { 
    "configProperties": { 
     "System.GC.Server": true 
    } 
    }, 

    "publishOptions": { 
    "include": [ 
     "wwwroot", 
     "Views", 
     "Areas/**/Views", 
     "appsettings.json", 
     "web.config" 
    ] 
    }, 

    "scripts": { 
    "postpublish": [ "dotnet publish-iis --publish-folder %publish:OutputPath% --framework %publish:FullTargetFramework%" ] 
    } 
} 
相關問題