小编Mat*_*ias的帖子

Powershell Add-Content 应该创建路径但抛出异常“无法找到路径的一部分”

我正在使用 powershellAdd-Content创建文件。但是,当文件的文件夹不存在时,我收到错误:

Add-Content : Could not find a part of the path 'C:\tests\test134\logs\test134.log'.

根据文档,这应该创建文件夹:

PS C:\> Add-Content -Value (Get-Content "test.log") -Path  "C:\tests\test134\logs\test134.log" 
Run Code Online (Sandbox Code Playgroud)

此命令创建一个新的目录和文件,并将现有文件的内容复制到新创建的文件中。

此命令使用 Add-Content cmdlet 添加内容。Value 参数的值是一个 Get-Content 命令,该命令从现有文件 Test.log 中获取内容。

path参数的值为命令运行时不存在的路径。在此示例中,仅存在 C:\Tests 目录。该命令创建其余目录和 Test134.log 文件。

https://learn.microsoft.com/en-us/powershell/module/microsoft.powershell.management/add-content?view=powershell-5.1

这似乎是添加内容中的一个明显问题,不是吗?你能重现这个吗?

编辑:我正在运行 PowerShell 版本 5.1.16299.64

BR马蒂亚斯

powershell

5
推荐指数
2
解决办法
7115
查看次数

如何将AspNetCore从2.2.0更新到2.2.2

tldnr:如何Microsoft.AspNetCore.App从升级2.2.02.2.2?在包管理器用户界面中已禁用该功能。


当我创建一个testproject时,我意识到它Microsoft.AspNetCore.App是version 2.2.2(最新版本),而在我的主要Api项目中则是2.2.0

项目依赖项和SDK参考

由于以下原因,我无法更新它

SDK隐式引用。要更新程序包,请更新程序包所属的SDK

nuget manager阻止软件包更新到2.2.2

我确实安装了SDK 2.2.104,其中应包含2.2.2(我喜欢Microsoft的版本号非常直观)

C:\Users\matthias>dotnet --list-sdks
2.1.202 [C:\Program Files\dotnet\sdk]
2.1.402 [C:\Program Files\dotnet\sdk]
2.1.403 [C:\Program Files\dotnet\sdk]
2.1.503 [C:\Program Files\dotnet\sdk]
2.1.504 [C:\Program Files\dotnet\sdk]
2.1.600-preview-009472 [C:\Program Files\dotnet\sdk]
2.2.104 [C:\Program Files\dotnet\sdk]
Run Code Online (Sandbox Code Playgroud)

将所有内容更新为的正确方法是2.2.2什么?我可以在中设置该软件包的版本号csproj,而且看起来似乎还可以,但是我想这不是干净的方法。UI为什么会禁用它呢。

项目文件来自默认模板。

C:\Users\matthias>dotnet --list-sdks
2.1.202 [C:\Program Files\dotnet\sdk]
2.1.402 [C:\Program Files\dotnet\sdk]
2.1.403 [C:\Program Files\dotnet\sdk]
2.1.503 [C:\Program Files\dotnet\sdk]
2.1.504 [C:\Program Files\dotnet\sdk]
2.1.600-preview-009472 [C:\Program Files\dotnet\sdk]
2.2.104 [C:\Program Files\dotnet\sdk]
Run Code Online (Sandbox Code Playgroud)

资料来源:https : //github.com/matthiaslischka/netcore222updateissue

更新:

我现在已经RuntimeFrameworkVersion 2.2.2 …

.net-core asp.net-core asp.net-core-webapi

5
推荐指数
1
解决办法
1305
查看次数

EF Core:不抛出 QueryClientEvaluationWarning 的任何理由

EF Core 有一个功能,当查询的部分无法在数据库上执行时,它可以在内存中评估该部分。发生这种情况时,它会记录警告。

(可选)EF Core 可以配置为在发生这种情况时抛出异常

optionsBuilder
    .UseSqlServer(@"Server=(localdb)\mssqllocaldb;Database=EFQuerying;Trusted_Connection=True;")
    .ConfigureWarnings(warnings => warnings.Throw(RelationalEventId.QueryClientEvaluationWarning)); // <--
Run Code Online (Sandbox Code Playgroud)

由于评估程序员打算在数据库中执行的内存中的某些内容可能会是一个巨大的性能问题,并且有些不干净,恕我直言,我现在正在考虑随时随地使用此异常配置。

我只是想知道是否有任何充分的理由不抛出异常?我个人更喜欢一个异常,然后更改要在内存中有意执行的代码(例如,在.ToList()有问题的语句之前添加一个)。对我来说很奇怪的是 EF 会解决这样的设计缺陷。

然而,我不确定我是否忘记了它首先存在的任何充分理由或任何可能需要这样做的情况。

c# entity-framework entity-framework-core .net-core

5
推荐指数
1
解决办法
3959
查看次数

DBContext 中具有 DBContextFactory 的作用域服务无法从根提供程序解析

我想注册一个作用域ICurrentUserService,然后在 DbContext 中使用它来设置CreatedBy每个实体的属性。我希望它具有作用域,因为它使用 currentHttpContext从声明中获取用户 id,并且 HttpContext 根据定义具有作用域。

services.AddTransient<ICurrentUserService, CurrentUserService>();
Run Code Online (Sandbox Code Playgroud)

但是,当我尝试将其与 DbContextFactory 一起使用时,如下所示:

services.AddDbContextFactory<MyDbContext>(options =>
    options.UseSqlServer(config.ConnectionStrings.MSSQLConnection, x =>
        {
            x.MigrationsHistoryTable("...");
            x.MigrationsAssembly("...");
        }));

services.AddScoped<IMyDbContext>(provider => provider.GetRequiredService<IDbContextFactory<MyDbContext>>().CreateDbContext());
services.AddScoped<MyDbContext>(provider => provider.GetRequiredService<IDbContextFactory<MyDbContext>>().CreateDbContext());
Run Code Online (Sandbox Code Playgroud)

我收到错误

无法从根提供程序解析作用域服务“SomeNamespace.ICurrentUserService”。

我可以将其更改为 Transient,但这似乎是错误的,并且当我想模拟它并且每个类都会获得一个新实例时,这可能会成为稍后测试的问题。

我实际上不确定为什么 Scoped 在这里不起作用。DbContextFactory 已注册为 Singleton,但 Context 也被解析为 Scoped。

dependency-injection dbcontext entity-framework-core .net-core

4
推荐指数
1
解决办法
2891
查看次数

FluentAssertions:断言集合包含“ IsEquivalentTo”的元素

我坚持认为简单的例子。我想断言一个对象集合包含一个与给定对象等效的对象。喜欢:col.ShouldContainEquivalentTo(obj)

var objectList1 = new List<SomeClass> { new SomeClass("A"), new SomeClass("B"), new SomeClass("C") };
var objectList2 = new List<SomeClass> { new SomeClass("C"), new SomeClass("B"), new SomeClass("A") };

objectList1.ShouldAllBeEquivalentTo(objectList2); //this works
objectList2.ShouldContainEquivalentTo(new SomeClass("B")); //method does not exist. How can I achieve sthg like that
Run Code Online (Sandbox Code Playgroud)

我想基于对象的值进行比较-随便怎么样ShouldBeEquivalentToShouldAllBeEquivalentTo工作。不必编写我自己的相等比较器。

马蒂亚斯(BR Matthias)

c# fluent-assertions

2
推荐指数
2
解决办法
4260
查看次数