请教下关于从2.2升级到3.0的打包问题.
准确来说是我没彻底搞明白其中的包引用关系.
首先 2.2 到3.0 有好些包MS不再生产
如下:
原话是
“To see the full list of packages that are no longer produced,”
字面的意思是“这些包再也不会再生产“!
最直白的理解应该是再也不会再升级了。
我对这句话理解有2个疑问
1:MS的意思是不是不建议我们再使用这些包,应该换更新的方法?
2:这些包你还可以继续用,我们是为了更轻量级这些包不会再被默认引用了,如有需要你自行引用即可?
我的理解更倾向于2 我觉得MS甚至还会继续升级这些包 只不过默认没引用罢了
就比如
”Microsoft.AspNetCore.Http.Features“
以上这个包也在列表中 但是 却有更新
根据这个现象 更说明应该 2 是对的
接下来就是问题
我使用了这个包
’Microsoft.AspNetCore.Http.Abstractions‘ 目前最新的版本是 2.2.0
我就想问 打包的时候这个包是怎么被引用进来的
首先
发布目录里不会有
Microsoft.AspNetCore.Http.Abstractions.dll
我看了下
deps.json文件有引用
以下是这个文件中关于 Microsoft.AspNetCore.Http.Abstractions的关键信息
特意找了个空机器只安装了 3.0 的Runtime 跑起来没问题
全局搜索了这2DLL发现只有这2地方出现
我想知道他最终是如何加载进去的
是不是安装 runtime的是否会有一个默认版本的 dll 如果使用的版本号和默认安装的版本号一样就使用默认安装的 如果用了更高版本的就会直接把这个版本的DLL 直接生成在发布文件夹中了?
这要看 .csproj 文件
<Project Sdk="Microsoft.NET.Sdk.Web">
,会自动包含 Microsoft.AspNetCore.App
<Project Sdk="Microsoft.NET.Sdk">
,需要通过 FrameworkReference
引用 Microsoft.AspNetCore.App
<ItemGroup>
<FrameworkReference Include="Microsoft.AspNetCore.App" />
</ItemGroup>
而 Microsoft.AspNetCore.App
究竟包含哪个版本的包取决于 .net core sdk 的版本
@dudu: 是的
我目前用的是3.0的SDK
我的最终疑问是
他默认是怎么帮我引用到
'Microsoft.AspNetCore.Http.Abstractions' 2.2.0 的这个版本的包
@Skolley: 不应该引用这个版本的 nuget 包,建议提供一下 .csproj 中的配置,或者看一下其中是否有 Microsoft.AspNetCore.App
的引用
@dudu: 6666我懂了 我之前一直i在看我的 web项目 忘记看我分出去的项目了
确实 是我i外面的项目里 没用 Microsoft.AspNetCore.App
那我还是有那个问题 我用了 nuget 2.2.0 的包了 那他这个dll 到底在哪?
我看了下默认安装 runtime 的 版本号 是 ‘’
@Skolley: 在 C:\Program Files\dotnet\shared\Microsoft.AspNetCore.App\2.2.0
中,如果没有,那就在 C:\Users\Administrator\.nuget\packages\microsoft.aspnetcore.http.abstractions\2.2.0\lib\netstandard2.0
中
@dudu: 终于 找到了
原来在 Swashbuckle.AspNetCore 这个里面引用了 很多 2.x的东西
他还没完全升上去