创建了 dotnet 核心构建和 json 文件
Posted
技术标签:
【中文标题】创建了 dotnet 核心构建和 json 文件【英文标题】:dotnet core build and json files created 【发布时间】:2018-06-18 21:21:07 【问题描述】:如果我有以下情况:
using log4net;
using log4net.Config;
using System;
using System.IO;
using System.Reflection;
namespace CoreTestLog4Net
class Program
static void Main(string[] args)
var logRepository = LogManager.GetRepository(Assembly.GetEntryAssembly());
XmlConfigurator.Configure(logRepository, new FileInfo("log4net.config"));
var log = log4net.LogManager.GetLogger(typeof(Program));
log.Info("test");
Console.WriteLine("Hello ld!");
Console.Read();
我在 powershell 中执行以下操作,模拟在构建服务器上打包应用程序的操作:
`dotnet publish --output test
我做 ls .\CoreTestLog4Net\test 我明白了:
Mode LastWriteTime Length Name
---- ------------- ------ ----
-a---- 09/01/2018 18:24 3584 ClassLibraryA.dll
-a---- 09/01/2018 18:24 244 ClassLibraryA.pdb
-a---- 09/01/2018 18:51 55755 CoreTestLog4Net.deps.json
-a---- 09/01/2018 18:24 5120 CoreTestLog4Net.dll
-a---- 09/01/2018 18:24 588 CoreTestLog4Net.pdb
-a---- 09/01/2018 18:51 154 CoreTestLog4Net.runtimeconfig.json
-a---- 09/01/2018 13:28 447 log4net.config
-a---- 08/03/2017 19:26 221184 log4net.dll
然后我执行 dotnet .\CoreTestLog4Net\test3\CoreTestLog4Net.dll 来运行应用程序。
我的问题是这两个 json 文件是关于什么的?
如果我删除它们会出错
在部署到另一台机器时,它们是否必须作为部署的一部分进行部署?
【问题讨论】:
【参考方案1】:json文件很重要,部署时需要包含,因为:
.runtimeconfig.json
告诉主机(例如dotnet.exe
)运行应用程序的框架+版本。例如。如果您同时安装了 .NET Core 1.1 和 2.0,此文件将决定使用哪一个。此外,它包含用于配置运行时和主机设置的标志,例如垃圾收集设置。
.deps.json
包含有关引用的包和程序集的信息。 .NET Core 应用程序可以从包缓存中引用程序集,因此您的构建不需要将来自 NuGet 包的所有 DLL 复制到输出文件夹。 dotnet publish
的输出将包含分发所需的所有文件。它还用于解析默认情况下未添加到发布输出的 ASP.NET Core 运行时存储的资产,因为它们应该存在于目标服务器上。
【讨论】:
Martin,您没有直接回答“是”我需要部署这些文件,但从您的回答中我认为是的? 将其添加到答案中。是的。 真的没有办法从最终输出中删除它们吗?以上是关于创建了 dotnet 核心构建和 json 文件的主要内容,如果未能解决你的问题,请参考以下文章
在 asp.net 核心的构建后事件中运行 dotnet publish
使用 MSBuild 构建 gRPC dotnet 核心项目时如何包含自定义目录
Rider 说无法更新路径“/usr/share/dotnet/dotnet”中的 dotnet 核心