小编Kit*_*Kit的帖子

为什么C#编译器在'yield return'和动态之前声称'使用未赋值的变量'?

编译器抱怨resultingThing在下面的代码中被分配之前正在使用.

private IEnumerable<IThing> FindThings(dynamic spec)
{
    if (spec == null)
        yield break;

    IThing resultingThing;
    if (spec.Something > 0 && dictionary.TryGetValue(spec.Something, out resultingThing))
        yield return resultingThing;
    else
        // ...
}
Run Code Online (Sandbox Code Playgroud)

为什么声称这个?

我已经尝试了一个不同版本的方法,其中没有产量使用(例如,只是return IEnumerable<IThing>)但是使用动态参数,我尝试了一种不传递动态的方法版本(即我们在以前版本的C#).这些编译.

dynamic yield-keyword out-parameters c#-4.0

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

Resharper自定义模式:忽略属性属性

我正在编写一些Resarper Custom Patterns来警告我们一些需要注意的代码结构.其中一个是使用lambda变量OnPropertyChanged(()=> propertyname)替换OnpropertyChanged("String")

我定义的搜索模式是:

 public $type$ $property$
 {
            get { return $backingfield$; }
            set
            {
                if($backingfield$  != value) {
                    $backingfield$ = value;
                    OnPropertyChanged($String$);
                }
           }
 }
Run Code Online (Sandbox Code Playgroud)

这种模式正在被替换为:

public $type$ $property$
{
        get { return $backingfield$; }
        set
        {
            if($backingfield$  != value) {
                $backingfield$ = value;
                OnPropertyChanged(() => $property$);
            }
        }
}
Run Code Online (Sandbox Code Playgroud)

问题: 应用此时,Resharper会抛弃属性上定义的属性.这个片段:

[MyAttribute]
public int Test
{
            get { return _Test; }
            set
            {
                if (_Test != value)
                {
                    _Test = value;
                    OnPropertyChanged("Test");
                }
            }
}
Run Code Online (Sandbox Code Playgroud)

被取代

public …
Run Code Online (Sandbox Code Playgroud)

c# resharper visual-studio-2010 resharper-6.0

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

使用git和VS为非默认分支构建队列

我正在使用Visual Studio与git的集成.我修改了构建定义的Source Settings来监视所有git branches(refs/heads/*).这适用于自动触发的构建.

当我从Visual Studio中手动排队新的构建时,唯一的选择是对默认构建进行排队(例如,如果我默认refs/heads/develop,我不能排队refs/heads/mybranch).解决方法是在构建定义中临时更改默认值.还有另外一种方法吗?不知何故传递参数或许?

git tfs build team-build visual-studio-2013

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

rosyln 代码修复可以通过命令行实用程序应用吗?

可以通过命令行实用程序将分析器应用于代码。是否可以对此实用程序中的代码应用相应的代码修复?

我想做的是查询包含分析器的 NuGet 包,针对代码库运行所有分析器,并让它们为检测到的每个实例应用相应的代码修复。

command-line-interface roslyn

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

更改 MongoDB 文档中存储为字符串的枚举值

我有一个类,里面有一个枚举属性。由于以下文档的 .NET 表示形式中的属性,在保存整个文档时,该属性会作为字符串写入数据库

public enum Status { Good, Bad }

public class Document
{
    [BsonRepresentation(BsonType.String)]
    public Status Status { get; set; }
    // ...
}

Run Code Online (Sandbox Code Playgroud)

稍后,当我想要更新文档中的值而不保存整个文档时,我构建一个如下过滤器:

var builder = Builders<T>.Update;
var filter = builder.Set(new StringFieldDefinition<T, Status>(fieldName), (Status)value);
var result = await Context.Collection.UpdateManyAsync(filter, update);
Run Code Online (Sandbox Code Playgroud)

不幸的是,这会写入枚举的整数值。

如果我将过滤器更改为这个

var filter = builder.Set(new StringFieldDefinition<T, Status>(fieldName), value.ToString());
Run Code Online (Sandbox Code Playgroud)

司机会抛出一个InvalidCastException。如何正确构建过滤器?有没有另一种方法可以直接设置枚举值而不替换文档?

我想到可能有一种方法可以将单字段行为与整个文档的属性相关联,但我似乎不知道如何做到这一点。

c# enums mongodb mongodb-.net-driver

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

在 yaml 或 UI 中设置构建优先级

有没有办法在基于 yaml 的管道中设置构建的优先级?Azure DevOps API中似乎有关于构建优先级的参考,但没有介绍如何通过 yaml 执行此操作。我以为触发器部分可能有一些文档,但没有。

我们需要这个,因为我们有一些快速构建的 NuGet 包,但这些包通过缓慢构建的管道而变得匮乏,使得包的周转时间变得痛苦。

我能想到的最接近解决这个问题的方法是通过 yaml 中的代理要求

demands:
  - Agent.ComputerName = XYZ
Run Code Online (Sandbox Code Playgroud)

分离构建管道,但这有点麻烦,并且不能有效地使用代理。

在用户界面中设置它的方法是可以接受的,但我似乎找不到任何东西。

build azure-devops

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

如何获取 .csproj 文件中两个日期之间的差异?

我在 csproj 文件中看到了一些这样的代码

$([System.DateTime]::UtcNow.ToString(mmff))
Run Code Online (Sandbox Code Playgroud)

自动增加程序集版本:

<VersionSuffix>2.0.0.$([System.DateTime]::UtcNow.ToString(mmff))</VersionSuffix>
<AssemblyVersion Condition=" '$(VersionSuffix)' == '' ">0.0.0.1</AssemblyVersion>
Run Code Online (Sandbox Code Playgroud)

那是什么语言/脚本?我如何使用它来获取两个日期之间的差异?

我试图做这样的事情:

<VersionMajor>2</VersionMajor>
<VersionMinor>1</VersionMinor>
<DaysFromLastRelease>$(([System.DateTime]::UtcNow - new [System.DateTime](2021,1,1))::TotalDays)</DaysFromLastRelease>
Run Code Online (Sandbox Code Playgroud)

但它不起作用:)

.net c# msbuild csproj visual-studio

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

预计会出现错误,但代码可以正常编译

鉴于此代码,

interface TaskStartedEvent {
    type: "started",
    task: string
}

interface TaskLogEvent {
    type: "log",
    task: string,
    message: string
}

interface TaskFailedEvent {
    type: "failed",
    task: string,
    error?: string
}

interface FreeLog {
    message: string | Error,
    meta?: unknown
}

interface UndefinedTask {
    task?: undefined
}

type TaskEvent = TaskStartedEvent | TaskLogEvent | TaskFailedEvent;
type RuntimeEvent = (FreeLog & UndefinedTask) | TaskEvent;

function foo(ev: RuntimeEvent) {
    console.log(ev);    
}
foo({ message: "bar", type: "log" });
Run Code Online (Sandbox Code Playgroud)

为什么 Typescript 编译器在这里没有失败?

我传递了一个type字段,所以它不能是一个(FreeLog …

typescript

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

有哪些开源工具可以检查软件架构的稳健性?

我认为这是一个棘手的问题,但我想验证我的软件架构足够强大.

我计划在我的代码上执行这些工具:

但我想要一些工具来检查(除其他外):

  • 集会的依赖关系
  • 我的物体之间的耦合太强了
  • 等等.

总之,我想要开源工具来突出我项目的任何建筑故障.

我知道最好的工具是经验丰富的建筑师,但即使是最好的木匠也需要一把好的锤子;)

.net c# architecture

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

C# .NET Core 7 Http Listener 应用程序,包装在 docker 中,无法从 localhost 访问

我觉得我在这次代码短途旅行中遗漏了一些东西。让我引导您完成这个过程。

在 C# 中,我使用非常简单的代码。没有launchsettings.json,只需对其进行硬编码以查看是否有效。以下是设置和主要内容,以便您可以看到它是如何启动的:

public class Program
{
    public static HttpListener listener;
    public static string url = "http://localhost:8001/";
---- later on in main:------
public static void Main(string[] args)
    {
        listener = new HttpListener();
        listener.Prefixes.Add(url);
        listener.Start();
        Console.WriteLine("Listening for connections on {0}", url);
Run Code Online (Sandbox Code Playgroud)

我知道该代码有效。当我在 VS2022 调试模式(无 docker)下运行时,它显示我的简单 html 页面,上面写着“系统正常”。如果我在 docker 中运行它,这就是一切变得奇怪的地方。我现在将介绍 docker 配置。

Docker文件:

FROM mcr.microsoft.com/dotnet/runtime:7.0 AS base
WORKDIR /app

FROM mcr.microsoft.com/dotnet/sdk:7.0 AS build
WORKDIR /src
COPY ["xevenListens.csproj", "."]
RUN dotnet restore "./xevenListens.csproj"
COPY . .
WORKDIR "/src/."
RUN dotnet …
Run Code Online (Sandbox Code Playgroud)

c# httplistener docker .net-core docker-compose

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