如果我有以下内容:
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文件是什么?
如果我删除它们,我会收到错误
在部署到另一台计算机时,是否必须将它们部署为部署的一部分?
答案 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的资产,因为它们应该出现在目标服务器上。