WeiXinMPSDK
WeiXinMPSDK copied to clipboard
console app生成错误runtime framework
首先感谢你们对该项目的维护。
问题描述
创建控制台应用程序,引用WxOpen包,编译后查看runtimeconfig.json文件生成了错误的Runtime Framework。
造成该错误的原因是在 xxx.netcore3.csproj 文件中编译条件为netcoreapp3.0时,都默认带上了Framework Microsoft.AspNetCore.App
<ItemGroup Condition=" '$(TargetFramework)' == 'netcoreapp3.0' ">
<FrameworkReference Include="Microsoft.AspNetCore.App" />
<PackageReference Include="System.Xml.XmlDocument" Version="4.3.0" />
<PackageReference Include="System.Xml.XPath.XmlDocument" Version="4.3.0" />
</ItemGroup>
该问题的影响
- 当为控制台程序的时候,必须要引入AspNetCore的Sdk,而非NetCore的Sdk造成包过大。
- 如果想实现一个后台应用程序,那么该程序也必须是作为网站应用来运行
- 具体区别可以参照该文档
期待结果
{
"runtimeOptions": {
"tfm": "netcoreapp3.0",
"framework": {
"name": "Microsoft.NetCore.App",
"version": "3.0.0"
}
}
}
实际结果
{
"runtimeOptions": {
"tfm": "netcoreapp3.0",
"framework": {
"name": "Microsoft.AspNetCore.App",
"version": "3.0.0"
}
}
}
重现问题步骤(如果可以)
- 创建控制台应用程序
- 安装Senparc.Weixin.WxOpen
- 编译应用程序
- 查看xxx.runtimeconfig.json文件
微信官方文档 URL
微信官方文档快照(直接复制关键内容到下方)
发现问题的模块
- [ ] Senparc.Weixin 版本:
- [ ] Senparc.Weixin.MP 版本:
- [ ] Senparc.Weixin.MP.MVC 版本:
- [ ] Senparc.Weixin.Open 版本: ~- [ ] Senparc.Weixin.QY 版本:~
- [ ] Senparc.Weixin.Work 版本:
- [x] Senparc.Weixin.WxOpen 版本:
- [ ] Senparc.Weixin.Cache.Redis 版本:
- [ ] Senparc.Weixin.Cache.Memcached 版本:
- [ ] 其他模块:
模块对应的 .net 版本
- [ ] .net 3.5
- [ ] .net 4.0
- [ ] .net 4.5
- [ ] .net standard 2.0
- [ ] .net core 1.x
- [ ] .net core 2.x
- [x] .net core 3.x
开发环境
- [ ] Visual Studio 2015
- [ ] Visual Studio 2017
- [x] Visual Studio 2019
- [ ] Visual Studio Code
- [ ] 其他:
缓存环境
- [x] 服务器内存缓存(默认)
- [ ] Redis 版本:
- [ ] Memcached 版本:
- [ ] 其他:
系统环境
- [ ] Windows,版本:
- [x] Linux,版本:
- [ ] Mac,版本:
- [ ] 其他:
1、光就 WxOpen 本身确实没有这个引用也可以运行,不过最终的基类 CO2NET 在一些网络的 Request 上面是有做一些处理的,如果需要彻底摆脱的话,这一块就需要在底层做一个完全的分离。
2、理论上来说即使引用了,也不会影响 Console 的呈现形式吧?仍然可以是命令行的形式。
谢谢你能够在周末进行回复。 我来讲讲我是怎么发现这个问题的。由于我的程序都是容器化的,每次新添加程序集,我都会去修改dockerfile。然后我使用vs自动生成dockerfile,因为项目是console,生成的dockerfile中的sdk会使用runtime而不是aspnet。从而导致我的程序在容器中运行失败找不到AspNetCore运行环境。侧面也说明我的程序的确需要的是AspNetCore的运行环境。
好的,谢谢反馈,我会继续关注一下这个问题。