创建了dotnet核心构建和json文件

时间:2018-01-09 18:59:50

标签: .net-core

如果我有以下内容:

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

我做的是。\ 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 个答案:

答案 0 :(得分:1)

json文件非常重要,部署时需要包含这些文件,因为:

  • .runtimeconfig.json告诉主持人(例如dotnet.exe)运行应用的框架+版本。例如。如果您并排安装了.NET Core 1.1和2.0,则此文件决定使用哪一个。另外,它包含用于配置运行时和主机设置的标志,例如,垃圾收集设置。
  • .deps.json包含有关引用的包和程序集的信息。 .NET Core应用程序可以从包缓存中引用程序集,因此您的构建不需要将来自NuGet包的所有DLL复制到输出文件夹。但是dotnet publish的输出将包含分发所需的所有文件。它还用于解析默认情况下未添加到发布输出的ASP.NET Core Runtime Store的资产,因为它们应该出现在目标服务器上。