c# - 如何将 SetBasePath 设置为 Program.Main 上的 dll 位置

标签 c# asp.net-core asp.net-core-mvc

启动dotnet dll时

 cd /
 dotnet /tmp/donetproject/donetproject.dll

代码

.AddJsonFile("hostsettings.json", optional: true)

会看

/hostsettings.json

不是

/tmp/donetproject/hostsettings.json

设置 GetCurrentDirectory 无效

.SetBasePath(Directory.GetCurrentDirectory())

public class Program
{
    public static void Main(string[] args)
    {
        CreateWebHostBuilder(args).Build().Run();
    }
    public static IWebHostBuilder CreateWebHostBuilder(string[] args)
    {
        var config = new ConfigurationBuilder()
            .SetBasePath(Directory.GetCurrentDirectory())
            .AddJsonFile("hostsettings.json", optional: true)
            .AddCommandLine(args)
            .Build();

        return WebHost.CreateDefaultBuilder(args)
            .UseUrls()
            .UseConfiguration(config)
                .UseStartup<Startup>();
    }
}

最佳答案

您当前正在设置工作目录

.SetBasePath(Directory.GetCurrentDirectory())

这是启动进程/ 的目录,更具体地说是cd/。您真正想要的目录是 directory of your assembly :

.SetBasePath(Path.GetDirectoryName(Assembly.GetExecutingAssembly().Location))

也许您应该考虑将您的工作目录改为您的应用程序目录,例如。 G。 cd/tmp/donetproject/.

关于c# - 如何将 SetBasePath 设置为 Program.Main 上的 dll 位置,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54139335/

相关文章:

C# IDisposable、Dispose()、锁(this)

asp.net-core - 在没有 MVC 的情况下使用 ASP.NET Core

c# - AspNetCore.Identity - 如何为新用户设置 LockoutEnabled = false

c# - 手动添加参数?

c# - 组合多个谓词

c# - 由 javascript 填充的下拉列表在回发后被重置

c# - 添加自定义标签助手

entity-framework - 如何将数据库架构从 Identity 2.2.0 迁移到 3.0.0-rc1-final

javascript - 使用 ViewBag - asp.net mvc

c# - 模态内的多个 View