我目前正在使用ASP.NET Core MVC RC2,它假设支持从Core MVC Web应用程序项目引用完整的框架库项目。但我似乎无法使其发挥作用。
我有一个现有的完整框架库项目,我想在新的Core MVC Web应用程序项目中使用它。但是当我尝试添加对库项目的引用时,我得到一个错误,指出它的目标框架与Web应用程序的目标框架不兼容。
为了尝试简化问题,我创建了一个新的Core MVC Web应用程序和一个新的Windows代码库,并尝试将Web应用程序项目的引用添加到库的项目中,并得到相同的错误消息。我搜索了堆栈溢出,我确实发现这个问题似乎非常相关:How to make ASP.NET Core RC2 app build on net46 framework with older third party dependencies但我无法使用那里的信息来解决我的问题。
以下是重现问题的步骤:
我在Visual Studio 2015中基于“Web应用程序”模板创建了一个带有“.NET Core”“ASP.NET Core Web Application”项目的解决方案。
然后我在解决方案中添加了一个新的“Windows”“类库”项目。
所以在这一点上,解决方案看起来像这样:
现在,当我尝试使用visual studio将Core MVC Web应用程序的引用添加到Full Framework库时,我收到一条错误消息,指出“ExampleLib的目标框架与当前项目ExampleWebApplicaiton中的目标不兼容。 “:
这个错误似乎相当自我解释,似乎要我改变Web应用程序所针对的框架,以便它与库相同,这非常有意义。问题是我找不到关于如何做到这一点的文档,智能感知并没有特别有用。
我怀疑我需要更改Web应用程序的project.json
文件的以下部分之一:
"dependencies": {
"Microsoft.NETCore.App": {
"version": "1.0.0-rc2-3002702",
"type": "platform"
},
或
"frameworks": {
"netcoreapp1.0": {
"imports": [
"dotnet5.6",
"dnxcore50",
"portable-net45+win8"
]
}
},
如何为Core MVC Web应用程序而不是.NETCoreApp指定.NETFramework版本4.6?
答案 0 :(得分:5)
有一个模板允许您定位完整的.NET框架 - 抱歉,无法发布图像,但您可以访问: 模板 - > Visual C# - >网络 - > ASP.NET核心Web应用程序(.NET Framework)
请注意,您可以从上面的下拉列表中指定.NET Framework的版本(按照惯例)。
这会将你的project.json更改为:
"frameworks": {
"net461": { }
}
(取决于您选择的框架版本)。您现在可以添加对类库的引用。
"frameworks": {
"net461": {
"dependencies": {
"ClassLibrary1": {
"target": "project"
}
}
}
}
答案 1 :(得分:1)
遵循Ron C的步骤,这是我刚刚测试过的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%" ]
}
}