2017-01-30 17 views
4

のための間違った値Iは、次の構成とASP.NETのコアアプリケーションを持っている:私は、アプリケーションを公開し、アプリケーションディレクトリ内dotnet MyApp.dllを使用して、それを実行するとASPNETコア:ContentRootPath

public Startup(IHostingEnvironment hostingEnvironment) 
{ 
    _configuration = new ConfigurationBuilder() 
     .SetBasePath(hostingEnvironment.ContentRootPath) 
     .AddJsonFile("appsettings.json") 
     .AddJsonFile($"appsettings.{hostingEnvironment.EnvironmentName}.json", true) 
     .AddEnvironmentVariables() 
     .Build(); 
} 

、それはなしで実行されます問題。コマンドdotnet /dir1/dir2/MyApp.dllを実行すると、appsettings.jsonファイルが読み込まれません。少し掘り下げて、ContentRootPathが私がdotnetコマンドを実行しているディレクトリに設定されており、アプリケーションの実際のディレクトリではないことが判明しました。誰も私にこの問題を解決する方法を教えてもらえますか?

+2

アボートパッチを使用するか、appディレクトリから 'dotnet'を実行してください。私はここで何の問題も見ません –

+0

私は同じ問題を抱えています。残念ながら、dotnetはあなたのファイルが実際に存在する場所ではなく、 'dotnet'コマンドを呼び出したパスであると仮定しています。 – Matthew

答えて

2

私は同じ問題があります。私はしばしば、複数のプロジェクトを含む/ srcフォルダに自分のコードを格納します。だから、CLIからの私は、次の操作を行いたいと思います:

cd /c/code/repo 
dotnet restore /src/solution.sln 
dotnet build /src/solution.sln 
dotnet run /src/project/project.csproj 

最初の2作品も問題ありませんが、.NETのコア2.0のCLIのプロジェクトがどこにあるパスとして.SetBasePath(env.ContentRootPath)を認識しません。に建設されています。代わりに、私はCLI上の現在のパスを使用します。

これは、その結果:

Unhandled Exception: System.IO.FileNotFoundException: The configuration file 'appsettings.json' was not found and is not optional. The physical path is 'C:\code\repo\appsettings.json'. 

私が行けば、私はそれが仕事を得ることができる唯一の方法は、そのディレクトリ:

cd /src/project 
dotnet run project.csproj 

罰金ですが、私は解決策を再構築したい場合私の.slnが置かれている/ srcに戻る必要があります。これは非常に面倒です。

CLIのバグのようです。 VSコードの中にデバッグするときにこの問題がある場合、これは.vscodeの\のlaunch.jsonファイルに誤った構成が原因で発生することができ

+0

これはすべて、['UseContentRoot(Directory.GetCurrentDirectory())'](https://docs.microsoft.com/en-us/aspnet/core/fundamentals/hosting?tabs=aspnetcore1x)の呼び出しによるものではありませんか? #setting-up-a-host)を 'WebHostBuilder'に追加しましたか? –

+0

良い点、私はそれが必要であると思った。 UseContentRootを削除すると完全に動作します。ありがとう! –

0

あなたはでビルドポイントの「CWD」パラメータを確認する必要がありますプロジェクト - ので、この場合には、それはする必要があります:

"cwd": "${workspaceFolder}/src/project" 

スタートアップを実行しているときにhostingEnvironment.ContentRootPath値が正しくなります。

関連する問題