.net - 我的 dotnet 3.1 工具如何在没有 deps.json 或 runtimeconfig.json 的情况下发布工作构建
问题描述
当我在具有以下 dotnet --info 的 ci 容器中进行自包含发布时
16:26:12 .NET Core SDK (reflecting any global.json):
16:26:12 Version: 3.1.404
16:26:12 Commit: 470f6754b3
16:26:12
16:26:12 Runtime Environment:
16:26:12 OS Name: Windows
16:26:12 OS Version: 10.0.17763
16:26:12 OS Platform: Windows
16:26:12 RID: win10-x64
16:26:12 Base Path: c:\tools\dotnet\sdk\3.1.404\
16:26:12
16:26:12 Host (useful for support):
16:26:12 Version: 3.1.10
16:26:12 Commit: 1721e39439
16:26:12
16:26:12 .NET Core SDKs installed:
16:26:12 3.1.404 [c:\tools\dotnet\sdk]
16:26:12
16:26:12 .NET Core runtimes installed:
16:26:12 Microsoft.AspNetCore.App 3.1.10 [c:\tools\dotnet\shared\Microsoft.AspNetCore.App]
16:26:12 Microsoft.NETCore.App 3.1.10 [c:\tools\dotnet\shared\Microsoft.NETCore.App]
16:26:12 Microsoft.WindowsDesktop.App 3.1.10
我得到了一个工作自包含的发布版本。但输出文件不包括 *.runtimeconfig.json 或 *.deps.json 等文件。这些文件不是总是需要/创建的吗?使用 .NET 5 工具发布给我一个无法正常工作的构建(故障排除超出了这个问题的范围),并带有与 deps.json 相关的错误。起初我认为 deps.json 是在 NET 5 中添加的,因为我的 3.1 输出中没有它们。但我发现这篇文章https://natemcmaster.com/blog/2017/12/21/netcore-primitives/来自 2017 年,他在其中谈到即使在核心 2.1 sdk 中也需要这些文件。很明显,这些文件已经需要很长时间了。
dotnet publish $Project -o $tempDir -r win-x64 -c Release
我在项目文件中使用并进一步发布设置发布(使用上述环境) :
<PropertyGroup>
<OutputType>Exe</OutputType>
<DebugType>embedded</DebugType>
<TargetFramework>netcoreapp3.1</TargetFramework>
<UseWindowsForms>true</UseWindowsForms>
<GenerateAssemblyInfo>false</GenerateAssemblyInfo>
<SelfContained>true</SelfContained>
<PublishTrimmed>true</PublishTrimmed>
<PublishSingleFile>false</PublishSingleFile>
<PublishReadyToRun>false</PublishReadyToRun>
<Platform>Any CPU</Platform>
<RuntimeIdentifier>win-x64</RuntimeIdentifier>
<SatelliteResourceLanguages>en</SatelliteResourceLanguages>
<Platforms>AnyCPU</Platforms>
<ExcludeGeneratedDebugSymbol>false</ExcludeGeneratedDebugSymbol>
</PropertyGroup>
这是发布目录的输出(请注意,我已将应用名称捏造为“MyApplication”并删除了一些不相关的文件以保护隐私)https://pastebin.com/BHCevmbh
在没有这些文件的情况下,我正在使用 3.1 sdk 构建工作是怎么回事?
更新:我刚刚发现,如果我从 .NET 5 构建中删除 *.deps.json 和 *.runtimeconfig.json 文件,它们就会开始工作。那么这些文件是必需的吗?我读过的所有内容都说它们是,但它们似乎不是......如果它们可以被删除并且应用程序仍然可以工作(或者在这种情况下它们可能配置错误,应用程序开始工作)为什么它们存在以前没有)?
解决方案
推荐阅读
- python - Pyglet标签文本未在python 3.9中显示
- email - 如何获取邮件列表正在等待 RSMQ-WORKER
- python - 如何使用python请求获取cookie
- algorithm - 删除左子右兄弟树中键为 k 的所有叶节点
- c++ - 如何在 OpenCascade 中为形状创建尺寸标注
- mysql - MySQL-Cluster 无法启动
- django - 用阿拉伯语翻译一个 Django 应用程序,并将表单 LTR 转换为 RTL
- php - html 值在 php 表单中不显示为 jQuery 可见
- python - 使用“animation_frame”时,如何在动画中保持长方体形状
- java - 如何从另一个 JFrame 中显示 JPanel