小编Stu*_*art的帖子

Visual Studio 2022 - 代码分析构建错误不会导致构建失败

我在项目中启用了代码分析,并将警告视为错误

  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|AnyCPU'">
    <TreatWarningsAsErrors>True</TreatWarningsAsErrors>
  </PropertyGroup>

  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|AnyCPU'">
    <TreatWarningsAsErrors>True</TreatWarningsAsErrors>
  </PropertyGroup>
  <PropertyGroup>
    <EnforceCodeStyleInBuild>True</EnforceCodeStyleInBuild>
  <PropertyGroup>
Run Code Online (Sandbox Code Playgroud)

我添加了 .editorConfig 并设置了一些规则(例如,没有多个空行)。

我在 IDE 的错误列表中看到错误,并且代码中显示红色摆动:

VS2021截图

然而,该项目仍然构建得很好。(我可以删除 bin 文件夹并构建,查看错误,它仍然将文件输出到 bin 文件夹中)。

为什么它会忽略错误?

我想让这些代码分析错误实际上使构建失败。

c# visual-studio

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

异步方法签名错误.必须返回void,Task或Task <T>

我有一个异步方法.

private static async Task InsertConnectionStatusIntoAzureDatabaseAsync(Device device)
{
   ...
}
Run Code Online (Sandbox Code Playgroud)

我叫它用

await InsertConnectionStatusIntoAzureDatabaseAsync(device).ConfigureAwait(false);
Run Code Online (Sandbox Code Playgroud)

视觉工作室不会建立一个说 async method must return void, Task or Task<T>

它也红色曲线InsertConnectionStatusIntoAzureDatabaseAsync(device).ConfigureAwait(false);说:

任务不包含ConfigureAwait()的定义

文件顶部的用法是

using System.Threading.Tasks;
using System.Threading;
Run Code Online (Sandbox Code Playgroud)

它所针对的.net框架是4.6.1

c# asynchronous

3
推荐指数
1
解决办法
479
查看次数

MVVM 和异步属性

我有一个具有以下属性的 ViewModel

public Employee SelectedEmployee
        {
            get { return _selectedEmployee; }
            set
            {
                if (value == _selectedEmployee) return;
                _selectedEmployee = value;

                if (_selectedEmployee != null)
                {
                    StaffHolidaysViewModel.HolidayAllowance = _staffDataService.EmployeeHolidayAllowance(_selectedEmployee.Id);
                    FireEmployeeSelectedMessage(SelectedEmployee.Id);
                }

                RaisePropertyChanged();
                RaisePropertyChanged(nameof(Allowance));
                RaisePropertyChanged(nameof(Taken));
                RaisePropertyChanged(nameof(Remaining));
                RaisePropertyChanged(nameof(TotalAbsences));
                RaisePropertyChanged(nameof(TotalSick));
                RaisePropertyChanged(nameof(TotalNonSickAbsences));
                RaisePropertyChanged(nameof(SelectedEmployeeLeavingDate));
                UpdateCanExecuteChanged();
            }
        }
Run Code Online (Sandbox Code Playgroud)

线路

StaffHolidaysViewModel.HolidayAllowance = _staffDataService.EmployeeHolidayAllowance(_selectedEmployee.Id);
Run Code Online (Sandbox Code Playgroud)

包含对我想要异步的方法的调用。我不知道如何执行此操作,因为 SelectedEmployee 是绑定属性。

<ComboBox Name="StaffMembers" ItemsSource="{Binding FilteredEmployees}" SelectedItem="{Binding SelectedEmployee}" Width="200" BorderThickness="1" BorderBrush="DimGray">
                    <ComboBox.ItemTemplate>
                        <DataTemplate>
                            <TextBlock Text="{Binding Name}"/>
                        </DataTemplate>
                    </ComboBox.ItemTemplate>
                </ComboBox>
Run Code Online (Sandbox Code Playgroud)

由于它是一个属性,所以我无法创建它的类型Task<Employee>

异步绑定 MVVM 属性的推荐方法是什么?还是根本不可能?

c# wpf mvvm async-await

3
推荐指数
1
解决办法
1536
查看次数

Visual Studio IDE错误-无法访问已处置的对象

尝试在解决方案中打开任何.cs文件时出现以下错误。

在此处输入图片说明

我尝试过1)重新启动Visual Studio,2)重新启动计算机,3)删除所有obj文件夹,4)删除所有.vs文件和文件夹,但仍然无法打开任何文件。

如果我在解决方案资源管理器中双击文件或使用F7,则会出现相同的错误消息。

这些文件确实存在。

我也曾尝试禁用重新共享器,以防引起问题,但这没有帮助。

我也尝试使用Ctrl + T导航到类,输入类名称并选择该类。没有错误消息,但没有加载。

visual-studio-2017

3
推荐指数
4
解决办法
6354
查看次数

C# HttpClient - PutAsync

我有一个后端控制器方法

[Route("{ropeId}/segments")]
[HttpPut]
public async Task<IActionResult> Put([NotNull] [FromBody] IEnumerable<Segment> segments)
{
    Debug.WriteLine("In here!");
}
Run Code Online (Sandbox Code Playgroud)

我可以使用 Rider 中的便笺簿击中此罚款:

PUT https://localhost:6001/api/ropes/3/segments
Accept: */*
Cache-Control: no-cache
Content-Type: application/json

[{"SegmentNo":1,"RopeId":3,"LastReceived":"2019-12-28T14:34:35.9799039+01:00","BendDamage":0.018,"Temperature":30.0,"LoadLevel":1},
{"SegmentNo":16,"RopeId":3,"LastReceived":"2019-12-28T14:34:35.9799039+01:00","BendDamage":0.018,"Temperature":30.0,"LoadLevel":1}, {"SegmentNo":50,"RopeId":3,"LastReceived":"2019-12-28T14:34:35.9799039+01:00","BendDamage":0.018,"Temperature":30.0,"LoadLevel":1},
{"SegmentNo":69,"RopeId":3,"LastReceived":"2019-12-28T14:34:35.9799039+01:00","BendDamage":0.018,"Temperature":30.0,"LoadLevel":1},
{"SegmentNo":101,"RopeId":3,"LastReceived":"2019-12-28T14:34:35.9799039+01:00","BendDamage":0.018,"Temperature":30.0,"LoadLevel":1},  {"SegmentNo":106,"RopeId":3,"LastReceived":"2019-12-28T14:34:35.9799039+01:00","BendDamage":0.018,"Temperature":30.0,"LoadLevel":1},
{"SegmentNo":128,"RopeId":3,"LastReceived":"2019-12-28T14:34:35.9799039+01:00","BendDamage":0.018,"Temperature":30.0,"LoadLevel":1}]

Run Code Online (Sandbox Code Playgroud)

细分模型:

public sealed class Segment
{
   public Segment(short segmentNo,
                  byte ropeId,
                  DateTime lastReceived,
                  double bendDamage,
                  double temperature,
                  byte loadLevel)
   {
      SegmentNo = segmentNo;
      RopeId = ropeId;
      LastReceived = lastReceived;
      BendDamage = bendDamage;
      Temperature = temperature;
      LoadLevel = loadLevel;
   }

   public short SegmentNo { get; }
   public byte RopeId …
Run Code Online (Sandbox Code Playgroud)

c# httpclient .net-core

3
推荐指数
1
解决办法
3651
查看次数

基于json字段来控制整个Json内容

我有以下JSON:

{
    "From": "stuart",
    "Payload": {
        "Alert": "Critical",
        "Recipient": "Joe"
    }
}
Run Code Online (Sandbox Code Playgroud)

我想根据Alert中的字段是否为"严重"来进行路由.

我已经尝试过RouteOnAttribute处理器和EvaluateJson处理器.两者都没有工作.

对于RouteOnAttribute,我试过了

提醒: ${Payload:jsonPath('$.Alert'):equals('Critical')}

然后我有一个基于Alerted的关系,但没有任何东西进入我的RouteOnAttribute处理器,队列只是坐在那里直到它填满10,000.

我需要路由完整的JSON,我不能丢失路由中的信息.

在此输入图像描述

json apache-nifi

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

ruby 在多个数组上映射一个函数

我有 2 个数组

   asc = [0, 1, 2, 3, 4, 5]
   dsc = [5, 4, 3, 2, 1, 0]
Run Code Online (Sandbox Code Playgroud)

我想要一个新数组,它是将 asc 和 dsc 中的每个相应项相乘的结果

我已经习惯了 Clojure map

(map #(* %1 %2) asc dsc) ;=> (0 4 6 6 4 0)
Run Code Online (Sandbox Code Playgroud)

它们在 Ruby 中是否等效,在 Ruby 中执行此操作的惯用方法是什么?

我是 Ruby 的新手,但它似乎有非常好的简洁解决方案,所以我想我错过了一些东西。

我只是写:

i = 0
res = []

while i < asc.length() do
  res.append(asc[i] * dsc[i])
end
Run Code Online (Sandbox Code Playgroud)

ruby arrays iteration loops idioms

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

区分发生恢复的恐慌和没有发生错误

我有以下代码:

package main

import (
    "fmt"
)

func recoverFoo() {
    if r := recover(); r != nil {
        println("Recovered")
    }
}
func foo() (int, error) {
    defer recoverFoo()
    panic("shit!")
}
func main() {
    x, err := foo()
    println("after foo x = " + fmt.Sprint(x))

    if err != nil {
        println("An error occured")
    } else {
        println("No error occured")
    }
}
Run Code Online (Sandbox Code Playgroud)

在这种情况下,我正在调用 foo (实际上,我的函数 foo 正在调用第三方库,该库有时会出现恐慌,但有时也会返回错误)。如果它出现恐慌,我不能让它使应用程序崩溃,但我需要知道出了什么问题,因为我必须在错误时写入本地存储。

在这种情况下,虽然从 Foo 返回的值x可以有一个有效值 0。所以恢复设置 x 和 err 为其默认值(0 和 nil),并不能告诉我是否确实发生了错误......

我看到两种可能的解决方案,(1)我将 err 和 …

go

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

golang,£ char 导致奇怪的字符

我有一个函数可以从一串有效字符中生成一个随机字符串。当它选择一个 £ 时,我偶尔会得到奇怪的结果

我已将其复制到以下最小示例中:

func foo() string {
    validChars := "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789~@:!£$%^&*"
    var result strings.Builder

    for i := 0; i < len(validChars); i++ {

        currChar := validChars[i]
        result.WriteString(string(currChar))
    }
    return result.String()
}
Run Code Online (Sandbox Code Playgroud)

我希望这会回来

abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789~@:!£$%^&*

但它没有,它产生

abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789~@:!£$%^&*
                                                                  ^
                                             where did you come from ?
Run Code Online (Sandbox Code Playgroud)

如果我从原始的 validChars 字符串中取出 £ 符号,那个奇怪的 A 就会消失。

func foo() string {
    validChars := "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789~@:!$%^&*"
    var result strings.Builder

    for i := 0; i < len(validChars); i++ {

        currChar := validChars[i]
        result.WriteString(string(currChar))
    }
    return result.String()
}
Run Code Online (Sandbox Code Playgroud)

这产生 abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789~@:!$%^&*

go

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

从地图中删除键和值

我有一张看起来像这样的地图:

{\a [\h] 
 \h [\w \w]
 \i [\w \h \t]
 \p [\t \u \h \a]
 \s [\t \a \t \t \i \w \h]
 \t [\a]
 \u [\t \t \s]
 \w []}
Run Code Online (Sandbox Code Playgroud)

我想从键和值中删除例如 \w。即离开这个

{\a [\h] 
 \h []
 \i [\h \t]
 \p [\t \u \h \a]
 \s [\t \a \t \t \i \h]
 \t [\a]
 \u [\t \t \s]}
Run Code Online (Sandbox Code Playgroud)

注意,\w 键已经消失,\w 已经从所有值消失了!

现在我有这个,它有效,但我相信一定有更好的,更多的 Clojurey 方式!

(defn remove-last [last cmap]
  (reduce-kv (fn [acc k v]
               (if (empty? v)
                 acc
                 (into acc {k …
Run Code Online (Sandbox Code Playgroud)

clojure

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

Clojure int 到 char(例如 1 到 \1)

他们是 Clojure 中从 int 到 int 作为字符的一种方式,例如 1 到 \1 ?

我有一个字符串s,我想解析出与数字匹配的数字n(n 将始终为 0 到 9)

例如

 (let [n 1]
     (filter #(= ??? %) "123123123"))
Run Code Online (Sandbox Code Playgroud)

在哪里 ???将 n 作为 \n,例如将返回“111”

或者也许有更好的方法将字符串过滤为仅单个数字的实例?

clojure

0
推荐指数
1
解决办法
105
查看次数