小编Mer*_*sov的帖子

无法加载ResolveComReference任务

Win7,VS2017,ASP Net核心应用,目标框架为4.6.

当我尝试使用CLI构建我的项目时(在dotnet命令调用之前需要它),会发生错误:

C:...\Microsoft.Common.CurrentVersion.targets(2547,5):错误MSB4062:无法从程序集中加载"Microsoft.Build.T asks.ResolveComReference"任务Microsoft.Build.Tasks.Core,Version = 15.1.0.0,Culture = neutral,PublicKeyToken = b03f5f7f11d50a3a.确认声明是否正确,程序集及其所有依赖项是否可用,以及该任务是否包含实现Microsoft.Build.Framework .ITask的公共类.[C:\ project.csproj]

我一直在寻找与我的问题相关的问题,并做了以下事情:

  • 重启VS.
  • 使用VS工具清理并构建项目(已成功)
  • 加载Microsoft.Build包
  • 删除packages文件夹的内容并重新加载它

但没有什么能帮助我.

它可以是什么?

.net visual-studio visual-studio-2017

7
推荐指数
1
解决办法
2097
查看次数

迁移到VS 2017后,ToUnixTimeSeconds方法丢失

var item = new DateTimeOffset(DateTime.UtcNow).ToUnixTimeSeconds();
Run Code Online (Sandbox Code Playgroud)

该代码导致编译错误"不包含ToUnixTimeSeconds的定义...".它在VS 2015中运行良好,我也有using System;mscorlib和System(4.0.0.0版本)的命名空间和引用.DateTimeOffset的许多其他成员存在.

c# visual-studio-2017

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

检查ICollection是否实际为只读的正确方法

有我的模特课

public class Model 
{
    public ICollection<string> MyCollection { get; }
}
Run Code Online (Sandbox Code Playgroud)

我想测试MyCollectiongetter返回一个实际的只读集合.也就是说,类的客户端根本不能添加或删除元素.编写此类测试的正确方法是什么?

选项1

Assert.That(modelInstance.MyCollection is IReadonlyCollection<string>);
Run Code Online (Sandbox Code Playgroud)

它返回true,例如,当MyCollection属性的字段是List<string>(它实现IReadonlyCollection<string>)的实例时.

选项2

var testDelegate = () => modelInstance.MyCollection.Add("QWERTY");
Assert.That(testDelegate, Throws.TypeOf<NotSupportedException>());
Run Code Online (Sandbox Code Playgroud)

我发现它不优雅,因为可能有其他方法来修改返回的集合(例如索引器List<string>)

那么将属性类型更改ReadOnlyCollection<string>为实现所需行为的唯一解决方案吗?在那种情况下,我确实需要任何单元测试,但它的类型MyCollection更具体.

c#

6
推荐指数
1
解决办法
161
查看次数

事件采购模式:为什么我不能存储当前状态?

我正在学习事件采购模式我无法理解它的一件事.

在许多教程中都有指令不在 DB中存储实体的当前状态.开发人员应构建一个基础架构,用于从与所需实体相关的数据库中提取所有事件("事件流"),然后将它们应用于新的所需类型对象,最后它是当前状态.

让它成为银行账户.要将当前帐户状态返回给我的客户,我必须:

  1. 提取所有相关事件(可能在DB中有数千个事件)
  2. 计算当时的免费资金数额.

不过性能怎么样?我认为存储每个帐户的当前状态会更好,而新事件会立即产生副作用.我不对吗?

design-patterns repository-pattern event-sourcing

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

使用 OnPush 策略时不会重新渲染子组件的视图

@Component({
    selector: "parent",
    template: `<child [userId]="(userId$ | async)"></child>`,
    changeDetection: ChangeDetectionStrategy.OnPush
})
export class ParentCmp implements OnInit {
    userId$: BehaviorSubject<string> = new BehaviorSubject<string>(null);

    constructor(private activatedRoute: ActivatedRoute) { }
    ngOnInit() {
        this.activatedRoute.queryParams.subscribe(query => {
            //notify child with BehaviorSubject
            this.userId$.next(query["userid"])
        }
    }
}

@Component({
    selector: "child",
    template: `<div *ngIf="(userState$ | async) && userId">
                    {{(userState$ | async).user.id)}}
               </div>`,
    changeDetection: ChangeDetectionStrategy.OnPush
})
export class ChildCmp implements OnChanges {
    @Input() userId: string;
    private userState$: Observable<User>;

    constructor(private store: Store<store.AppState>) { }
    ngOnChanges(changes: SimpleChanges) { 
        //when it gets …
Run Code Online (Sandbox Code Playgroud)

typescript ngrx angular

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

JavaScript 中的活跃度是什么?

为了研究 JavaScript GC 的复杂性,我深入研究了其中的内容(即 ECMAScript 规范)。我发现,只要一个物体被认为是“活的”,就不应该被收集。活性本身定义如下:

在评估期间的任何时刻,如果满足以下任一条件,则将一组对象S视为 活动对象:

  • S中的任何元素都包含在任何代理的[[KeptAlive]]列表中。
  • 存在一个关于S的有效的未来假设 WeakRef-oblivious 执行,它观察S中任何对象的 Object 值。

[[KeptAlive]]一旦创建了一个特殊对象WeakRef(弱地)引用它,该列表就会附加一个对象,并在当前同步作业停止后清空。然而,对于WeakRef-oblivious execution,我无法理解它是什么:

对于某些对象集S,关于S 的假设的 WeakRef 不经意执行是这样一种执行:其所指对象是S的元素的WeakRef的抽象操作WeakRefDeref始终返回undefined

WeakRefDerefWeakRef当其undefined所指对象已被收集时返回。我的理解是否正确,这里暗示所有组成的对象都S应该被收集?因此,未来假设的 WeakRef-oblivious 执行的概念是,仍然存在一个对象, 的一个元素S,尚未被某些 收集和观察WeakRef

这一切对我来说仍然毫无意义。我希望得到一些样品。

javascript garbage-collection weak-references

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

实体框架核心:包含方法问题

有我的数据库简化模型:

public class Chat
{
public ICollection<ApplicationUser> Users {get; set;} //nav property - represents participants of a chat
}

public class ApplicationUser : IdentityUser // it represents a net-identity user; it does not have any references to chats
{...}
Run Code Online (Sandbox Code Playgroud)

因此,在控制器类中,我尝试获取聊天,例如包含当前用户作为参与者:

var user = GetUser();
_context.Chats.Where(chat => chat.Users.Contains(user)).ToList();
Run Code Online (Sandbox Code Playgroud)

此代码引发异常:

您不能将表达式... ApplicationUser用作方法“布尔值包含[ValueBuffer](System.Collections.Generic.IEnumerable`1 [Microsoft.EntityFrameworkCore.Storage.ValueBuffer ],Microsoft.EntityFrameworkCore.Storage.ValueBuffer)”

这里有什么问题?

asp.net entity-framework-core asp.net-core

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

textarea 换行符值是否始终标准化为“\n”javascript 字符串?

在 Windows 系统中,我发现由一个换行符组成的文本区域的值等于 JavaScript 字符串"\n",而不是"\r\n"

console.log(document.getElementById("textarea").value === "\n"); // true
console.log(document.getElementById("textarea").value === "\r\n"); //false
Run Code Online (Sandbox Code Playgroud)
<textarea name="" id="textarea" cols="30" rows="10">

</textarea>
Run Code Online (Sandbox Code Playgroud)

这是否意味着我在使用 textarea 值时不应该担心CRLFvs问题,因为它们的换行符总是标准化为字符串,所以我可以肯定地说并完成这样的任务 ,而无需考虑不同系统的换行符寻址?LF"\n" === "\u{000A}"lineBreakOnlyValue.length === 1document.getElementById("textarea").value = "\n"

这种行为是否以某种方式具体化?

html javascript line-breaks

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

EF Core中每种具体类型的表格

我为DB构建了以下层次结构模型:

        public abstract class ApplicationUser : IdentityUser 
        { }
        public class FirstUser : ApplicationUser 
        {}
        public class SecondUser : ApplicationUser
Run Code Online (Sandbox Code Playgroud)

值得注意的是,抽象的Application类继承自ASP.NET Core Identity,而不是 abstarct类IdentityUser.所以我的目的是仅为UserFirst和UserSecond构建不同的表,而不是为IdentityUser和ApplicationUser构建.
我尝试配置以下模型:

builder.Ignore<IdentityUser>();
builder.Entity<FirstUser>().ToTable("FirstUsers");
builder.Entity<SecondUser>().ToTable("SecondUsers");
Run Code Online (Sandbox Code Playgroud)

但它抛出异常:无效的列名称'Discriminator'
我该怎么办?

entity-framework asp.net-core

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

ngModel无法正确检测到数组更改

组件模型:

private SomeArray = [{ key: "Initial" }];
Run Code Online (Sandbox Code Playgroud)

用户可以动态添加/删除项目:

addField() {
    this.SomeArray.push({ key: Math.random().toString() });
}

removeField(index: number) {
    this.SomeArray.splice(index, 1);
}
Run Code Online (Sandbox Code Playgroud)

模板标记:

 <div class="col-xs-12">
     <button (click)="addField()" type="button">Add</button>
 </div>

 <div *ngFor="let field of SomeArray; let i = index;">
     <input [(ngModel)]="field.key" #modelField="ngModel" [name]=" 'SomeArray['+i+'].key' " type="text" class="form-control" required />
     <div [hidden]="modelField.pristine || !(modelField.errors && modelField.errors.required)" class="alert alert-danger">
        Required error
     </div>

    <button (click)="removeField(i)" class="btn btn-danger">Remove</button>
 </div>
Run Code Online (Sandbox Code Playgroud)

在用户从中删除任何项目之前,此方法一直有效SomeArray。如果我最初添加了两个项目: 在此处输入图片说明

并删除索引为1的索引:

在此处输入图片说明

然后在添加另一个项目Angular之后,将其视为项目同时具有0和1索引(新项目“占用”两个输入):

在此处输入图片说明

(不显示键为0.1345 ...的项目)

值得注意的SomeArray是预期的项目,但是数据绑定失败。可能是什么原因呢?

更新:感谢@Stefan Svrkota和@ AJT_82的评论,据我所知,可以通过添加[ngModelOptions]="{standalone: true}" …

javascript angular2-template angular

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

在 ConcurrentDictionary 中按索引更新值的属性是线程安全的吗?

public class Foo 
{
    public int Count { get; set; }
}

public class FooHandler 
{
    private ConcurrentDictionary<string, Foo> FooHash = new ConcurrentDictionary<string, Foo>();

    public IncrementFoo(string key) 
    {
        FooHash[key].Count++;
    }
}
Run Code Online (Sandbox Code Playgroud)

我可以用这种方式更新 Foo 条目的属性吗?它是线程安全的(即在这种情况下索引器的 get 或 set 是原子的)吗?

c#

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

Copy trait 是否仅从堆栈中进行位复制?

Rust文档Copy标记类型定义为

可以简单地通过复制位来复制其值的类型

我想知道这个定义是否意味着仅从堆栈中复制变量值,还是也包括复制堆资源?换句话说,Copy对于编译器来说,只是一个标志,带有类似“如果您要创建另一个具有相同值的这种类型的变量,只需从堆栈中复制与第一个变量相关的所有内容。这就足够了去做。”?

如果我有一个类型,其对象在堆中分配资源,并且我确信在通过memcpy某种方式对该资源进行位复制的情况下不会出现可怕的事情,该怎么办。我仍然不能用Copy(由于 Rust 只进行堆栈复制)来表示类型吗?

rust

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