我正在使用dotnet watch命令来运行asp.net核心项目.但是,默认情况下,它会将其Production作为一个环境.
我尝试了两种选择:
1) > dotnet watch ASPNETCORE_ENVIRONMENT=Development
2) > dotnet run ASPNETCORE_ENVIRONMENT=Development
Run Code Online (Sandbox Code Playgroud)
但它仍然把生产作为一种环境.
注意:在visual studio环境中,变量在项目属性中设置为默认情况下的开发,并从visual studio中选择该变量.
问题是:如何使用命令行在开发中运行dotnet核心项目?:
1) dotnet run
2) dotnet watch
Run Code Online (Sandbox Code Playgroud) 我在 Node.js 代码中使用 .env 文件来处理开发环境配置中的机密。我将 .env 添加到项目的 .gitignore 中,以防止将机密提交到 git 存储库。
我发现 node.js 的 .env 方法非常简单且高效。
C# 中的 .env 文件相当于什么?
带着这个问题,我并不是在寻找一个在 C# 中执行相同操作的库,例如(https://github.com/tonerdo/dotnet-env)
我想知道处理同样事情的 C# 方法,重点是不要将配置文件中的秘密提交到 git 存储库。
这不是 Azure 问题,因此 Azure Key Vault Azure 应用服务超出了此处的范围。
更新#1
请注意,我并不是要求处理我的 .net 应用程序中的机密。
多年来我一直在使用下面文档中的选项:
https://learn.microsoft.com/en-us/aspnet/core/security/app-secrets?view=aspnetcore-6.0&tabs=windows
当我开始学习 Node.js 并使用它时,.env我希望在 .net 中也能拥有同样的东西。
.env当我在开发人员笔记本电脑上开发 Node.js 应用程序时,文件使我不必不断调整环境变量。在生产中我设置了环境变量。
在我的本地开发人员笔记本电脑上,我喜欢将环境变量保存在.env文本文件中。我信任我的本地笔记本电脑加密硬盘,并且我的开发环境中不涉及生产密码。
本质上,我试图避免下面的选项以及在编码时不断调整环境变量的麻烦。
更新#2
.env这种情况可能会凸显文件的优势:
当我开发node.js应用程序时,在 VSCode 中,我.env在单独的选项卡中打开文件,以不断更改变量并在 VSCode 终端中运行我的 Node.js 应用程序。该场景是在调试/跟踪我的应用程序时尝试不同的服务原则、不同的数据库凭据、网络凭据等。c#为了快速在或项目中执行相同的操作.netcode,我必须有一个 bash …
我希望能够在不同的环境中通过 docker 运行 dotnet core(现在只是开发和生产),但我的 docker 总是在生产环境中启动。这是我的 docker 文件:
FROM microsoft/dotnet:sdk AS build-env
WORKDIR /app
# Copy csproj and restore as distinct layers
COPY *.csproj ./
RUN dotnet restore
# Copy everything else and build
COPY . ./
RUN dotnet publish -o out
# Build runtime image
FROM microsoft/dotnet:aspnetcore-runtime
WORKDIR /app
COPY --from=build-env /app/out .
ENTRYPOINT ["dotnet", "test.dll"]
Run Code Online (Sandbox Code Playgroud)
我有 appsettings.Production.json 和 appsettings.Development.json 并且我在 program.cs 中配置了我的两个环境,如下所示:
public static IWebHostBuilder CreateWebHostBuilder (string[] args) =>
WebHost.CreateDefaultBuilder (args)
.ConfigureAppConfiguration ((hostingContext, config) => {
config.AddJsonFile …Run Code Online (Sandbox Code Playgroud) 我正在编写一个.NET Core控制台应用程序(不是 ASP.NET Core Web应用程序)。在.NET Framework中,我将有一个App.config和App.Debug.config和一个App.Release.config文件,后者2用于转换前者。这使我可以根据创建调试还是发布版本来更改各种设置。
现在,使用.NET Core,您可以appsettings.json改用。很好,但是我该如何调试和发布转换呢?我已经读过一些有关使用环境变量来确定您是处于发行版环境还是调试环境的信息,但我确实不想这样做,并且它实际上也不适合控制台应用程序。那么,如何以与.NET Framework中类似的方式转换配置文件?
我们在一个解决方案中有多个项目,并且需要一种方法来快速将环境更改为另一个,例如 QA。我们的解决方案中有 8 个项目。如何做到这一点,而不需要手动通过每个?
Visual Studio 中是否有快速设置?
注意:我们有多个 API 项目,它们没有依赖关系。
我在单个解决方案中有一个 ASP.NET Core Web 应用程序和一个类库项目。我的目的是仅使用 .NET Core Web 应用程序作为 Web 应用程序,而不是用作数据层。我创建了单独的类库项目,其唯一目的是创建与数据库交互的实体类。我已将实体框架核心库包含到类库项目中。
如何包含多个配置文件(基于环境,例如appsettings.development.json等appsettings.production.json)并根据我设置的环境读取这些值?
如何DbContext在类库中注册该类,就像在下面的 ASP.NET Core Web 应用程序中一样?
Startup这是我的 ASP.NET Core Web 应用程序类的片段
public void ConfigureServices(IServiceCollection services)
{
var connString = Configuration.GetConntectionString("ConnectionStringKey");
services.AddDbContext<MyDbContext>(options => options.UseSqlServer(connString));
// other service configuration
}
Run Code Online (Sandbox Code Playgroud)
非常感谢您的意见。