创建了 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 核心

我们如何在 netlify 中发布 dotnet 核心应用程序?

dotnet核心2.1程序集如何知道是否进行调试?

dotnet core 创建文件名中没有“CoreFxPipe_”的命名管道