我几周以来一直在研究.NET Core。起初,这是微软对旧的.NET做事方式的彻底改革。但现在它让我感到紧张。以下是我原来的global.json
:
{
"projects": [ "src", "test" ],
"sdk": {
"version": "1.0.0-rc1-update1",
}
}
这是我的project.json
:
{
"version": "1.0.0-*",
"compilationOptions": {
"emitEntryPoint": true
},
"dependencies": {
"Microsoft.AspNet.IISPlatformHandler": "1.0.0-rc1-final",
"Microsoft.AspNet.Server.Kestrel": "1.0.0-rc1-final",
"Microsoft.AspNetCore.StaticFiles": "1.0.0-*",
"Microsoft.NETCore.Platforms": "1.0.1-*"
},
"commands": {
"web": "Microsoft.AspNet.Server.Kestrel"
},
"frameworks": {
"dnxcore50": { }
},
"exclude": [
"node_modules"
],
"publishExclude": [
"**.user",
"**.vspscc"
]
}
这是我的hosting.json
:
{
"webroot": "wwwroot"
}
我创建了一个空的ASP.NET Core 1.0 Web应用程序项目,我要做的就是创建一个AngularJs应用程序。但我无法访问wwwroot
目录,因为我无法:
app.UseDefaultFiles();
app.UseStaticFiles();
我从原始dnx451
中删除了project.json
,并将global.json
更改为:
{
"projects": [ "src", "test" ],
"sdk": {
"version": "1.0.0-rc1-update1",
"runtime": "coreclr",
"architecture": "x64"
}
}
错误:
Error NU1002 The dependency Microsoft.AspNetCore.StaticFiles 1.0.0-rc2-20248 in project QMS.UI does not support framework DNXCore,Version=v5.0. QMS.UI ..\QMS.UI\src\QMS.UI\project.json
我已经阅读了很多博客和stackoverflow答案。任何人都能以非常高的方式告诉我们我们是怎么做的:
dnx451
而不是dnxcore50
)(我应该使用#if dnxcore50 ......等符号吗?)请帮忙!我在另一个基于.NET Core的项目中遇到了类似的麻烦。
答案 0 :(得分:2)
静态文件依赖项是表单RC2,与您在项目其余部分使用的RC1不兼容。
要么使用RC1中的所有软件包,要么使用RC2中的所有软件包,但请注意RC2依赖项经常中断(一个软件包需要版本xyz,其他软件包尚未更新,需要旧库但由于API更改无法工作使用较新版本。)
这是RC1包
"Microsoft.AspNet.IISPlatformHandler": "1.0.0-rc1-final",
"Microsoft.AspNet.Server.Kestrel": "1.0.0-rc1-final",
这是RC2包(您可以在其名称上识别它们,Microsoft.AspNet.*
包在RC2周期的某个时间重命名为Microsoft.AspNetCore.*
"Microsoft.AspNetCore.StaticFiles": "1.0.0-*",
"Microsoft.NETCore.Platforms": "1.0.1-*"
- 有效地找到一个有效的包,它将包含我们的目标框架。
第一步是仅针对相同的版本。如果您需要稳定的环境,请使用RC1直到RC2释放。但是,请注意,有很多重大变化。查看ASP.NET Core GitHub annoucements(主要是重大更改)以获取更多信息。
- 有效地使所有框架(如果在project.json中列出)对该依赖符号表示满意吗? (有时我得到一个错误,它可用于dnx451而不是dnxcore50)(我应该使用#if dnxcore50 ......等符号吗?)
取决于您需要的装配体。有些api与两个目标平台兼容,但大多数都没有。通常,这就是你如何切换平台相关的程序集/代码。
请注意,如果使用类库(包)或.NET Core应用程序(Web项目,单元测试项目),则会有所不同。
对于RC1,mon dnx451
(或dnx452
,dnx46
)用于完整的.NET Framework定位,dnxcore50
用于.NET Core。但是对于类库,您必须使用net451
(或net452
/ net46
)来获取完整的.NET Framework目标和dotnet5.x
(x = 1-4,我也是RC2) 5)用于.NET Core。