我正在尝试为我正在构建的.Net网络应用设置应用程序基础路径。我一直在配置构建器上遇到错误。这是我得到的错误。
DNX,Version=v4.5.1 error CS1061: 'ConfigurationBuilder' does not contain a definition for 'SetBasePath' and no extension method 'SetBasePath' accepting a first argument of type 'ConfigurationBuilder' could be found (are you missing a using directive or an assembly reference?)
我假设我的.AddJsonFile()
和.AddEnvironmentVariables()
出现同样的错误。我做错什么了吗?我没有为project.json添加正确的依赖项吗?我已经封装了我的startup.cs和我的project.json。
project.json
{
"version": "1.0.0-*",
"compilationOptions": {
"emitEntryPoint": true
},
"tooling": {
"defaultNamespace": "TripPlanner"
},
"dependencies": {
"Microsoft.AspNet.StaticFiles": "1.0.0-rc1-final",
"Microsoft.AspNet.Server.Kestrel": "1.0.0-rc1-final",
"Microsoft.AspNet.Mvc": "6.0.0-rc1-final",
"Microsoft.AspNet.Mvc.TagHelpers": "6.0.0-rc1-final",
"Microsoft.Framework.Configuration": "1.0.0-beta8",
"Microsoft.Framework.DependencyInjection": "1.0.0-beta8"
//"Microsoft.Extensions.PlatformAbstractions": "1.0.0-beta8"
},
"commands": {
"web": "Microsoft.AspNet.Server.Kestrel"
},
"frameworks": {
"dnx451": { },
"dnxcore50": { }
},
"exclude": [
"wwwroot",
"node_modules"
],
"publishExclude": [
"**.user",
"**.vspscc"
]
}
startup.cs
using System;
using System.Collections.Generic;
using System.Linq;
using System.Threading.Tasks;
using Microsoft.AspNet.Builder;
using Microsoft.AspNet.Hosting;
using Microsoft.AspNet.Http;
using Microsoft.Extensions.DependencyInjection;
using Microsoft.Extensions.PlatformAbstractions;
using Microsoft.Framework.Configuration;
using Microsoft.Framework.DependencyInjection;
using TripPlanner.Services;
namespace TripPlanner
{
public class Startup
{
public static IConfigurationRoot Configuration;
public Startup(IApplicationEnvironment appEnv){
var builder = new ConfigurationBuilder()
.SetBasePath(appEnv.ApplicationBasePath)
.AddJsonFile("config.json")
.AddEnvironmentVariables();
Configuration = builder.Build();
}
// This method gets called by the runtime. Use this method to add services to the container.
// For more information on how to configure your application, visit http://go.microsoft.com/fwlink/?LinkID=398940
public void ConfigureServices(Microsoft.Extensions.DependencyInjection.IServiceCollection services)
{
services.AddMvc();
#if DEBUG
services.AddScoped<IMailService, DebugMailService> ();
#else
services.AddScoped<IMailService, RealMailService> ();
#endif
}
// This method gets called by the runtime. Use this method to configure the HTTP request pipeline.
public void Configure(IApplicationBuilder app)
{
//app.UseDefaultFiles();
app.UseStaticFiles();
app.UseMvc(config =>
{
config.MapRoute(
name: "Default",
template: "{controller}/{action}/{id?}",
defaults: new { controller = "App", action = "Index"}
);
});
}
// Entry point for the application.
public static void Main(string[] args) => Microsoft.AspNet.Hosting.WebApplication.Run<Startup>(args);
}
}
错误发生在startup.cs顶部附近的public startup
函数中。
答案 0 :(得分:117)
我能够解决这个问题。如果您还没有解决它,请尝试以下方法 在project.json中。添加以下内容:
index.html
它应该有效
答案 1 :(得分:20)
不确定是否还有人遇到此问题,但我可以通过以下方式在dotnetcore控制台项目(netcoreapp2.0)中解决此问题:
dotnet add package Microsoft.Extensions.Configuration.Json
答案 2 :(得分:5)
尝试在您的.csproj
文件中添加以下内容:
<ItemGroup>
<PackageReference Include="Microsoft.Extensions.Configuration" Version="2.2.0" />
<PackageReference Include="Microsoft.Extensions.Configuration.FileExtensions" Version="2.2.0" />
<PackageReference Include="Microsoft.Extensions.Configuration.Json" Version="2.2.0" />
</ItemGroup>
答案 3 :(得分:3)
再加上一个可能的问题...
我必须添加:
<PackageReference Include="Microsoft.Extensions.Configuration.UserSecrets" Version="3.0.0" />
为此进行编译:
var builder = new ConfigurationBuilder()
.SetBasePath(Directory.GetCurrentDirectory())
...
编辑:几个月前我写了这个答案,但是我很确定它是针对控制台应用程序的。
答案 4 :(得分:2)
尝试将以下内容添加到project.json依赖项中:
"Microsoft.Extensions.Configuration.CommandLine": "1.1.1",
或者在project.csproj中:
<PackageReference Include="Microsoft.Extensions.Configuration.CommandLine" Version="1.1.1" />
这对我有用。
答案 5 :(得分:2)
如果您正在运行 .NET Core 1.x 或 .NET Standard 1.x ,则应运行以下命令:
dotnet add package Microsoft.Extensions.Configuration.Json -v 1.1.1
如果您的项目在另一个文件夹中:
dotnet add .\src\MyProject package Microsoft.Extensions.Configuration.Json -v 1.1.1
...,其中 MyProject 是.csproj
文件的名称。
答案 6 :(得分:1)
尝试将以下内容添加到project.json依赖项:
"Microsoft.Extensions.Configuration": "1.0.0-*",
"Microsoft.Extensions.Configuration.Abstractions": "1.0.0-*",
答案 7 :(得分:1)
将以下内容添加到project.json:
"Microsoft.Extensions.Configuration.FileExtensions": "1.0.0-*"
答案 8 :(得分:0)
此外,别忘了从“属性”窗口中将Json文件的“复制到输出目录”属性设置为“始终复制”。
答案 9 :(得分:0)
还有其他需要考虑的地方:
using Microsoft.Extensions.Configuration;
如果没有该“使用”语句,则不会在Microsoft.Extensions.Configuration.FileExtensions中找到扩展方法。
因为我们也是:
using System.Configuration;
并且与“ ConfigurationBuilder”发生了名称冲突。 添加
using Microsoft.Extensions.Configuration;
行...删除
using System.Configuration;
行,然后完全限定System.Configuration下的所有内容。