小编jsc*_*rle的帖子

发布 Nuget 包时有关 PackageReference 版本的最佳实践?

发布 Nuget 包时指定 PackageReference 的最佳实践是什么?

根据https://learn.microsoft.com/en-us/nuget/consume-packages/package-references-in-project-files,指定版本号相当于 >= 该版本。

例如,以下内容将引用 Newtonsoft.Json 版本 11.0.1 或更高版本以及 RestSharp 106.9.0 或更高版本。

  <ItemGroup>
    <PackageReference Include="Newtonsoft.Json" Version="11.0.1" />
    <PackageReference Include="RestSharp" Version="106.9.0" />
  </ItemGroup>
Run Code Online (Sandbox Code Playgroud)

如果另一个开发人员想要在他的项目中使用我的 Nuget 包,那么该开发人员可能也需要在他的项目中使用相同的包,并且他可能无法也不想使用我一直在使用的相同版本。因此,最佳实践是什么?我应该在发布时始终指定最低兼容版本,还是只更新我认为适合我的项目的包,而不用担心发布的版本号?

.net c# nuget

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

将项目添加到 ImmutableDictionary&lt;TKey, TValue&gt; 内的 ImmutableList&lt;T&gt;

我似乎无法弄清楚如何将项目添加ImmutableListImmutableDictionary.

我有以下变量:

ImmutableDictionary<string, ImmutableList<string>> _attributes = ImmutableDictionary<string, ImmutableList<string>>.Empty;
Run Code Online (Sandbox Code Playgroud)

我试图在列表中添加一个值:

string[] attribute = line.Split(':');
if (!_attributes.ContainsKey(attribute[0]))
    _attributes = _attributes.Add(attribute[0], ImmutableList<string>.Empty);
if (attribute.Length == 2)
    _attributes[attribute[0]] = _attributes[attribute[0]].Add(attribute[1]);
Run Code Online (Sandbox Code Playgroud)

但是,我收到一条错误消息,指出ImmutableList没有设置器。如何在不重建整个词典的情况下替换词典中的列表?

.net c# immutable-collections c#-8.0 .net-5

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

提高将字节转换为 UInt32 的性能

我正在处理处理 2GB 数据的源代码,这些数据代表 60 秒的网络流量。总处理时间约为 40 秒。我正在尝试尽可能优化我的代码以获得最佳性能,以尝试将总处理时间降低到 30 秒以下。

线程时间

我目前在 dotTrace 中的分析表明,在我的代码发出的 330 万次调用中,有 7.62% 的时间花在了 Timestamp 结构的构造函数中。

构造函数

具体来说,我正在努力改进两个陈述:

TimestampHigh = BitConverter.ToUInt32(timestampBytes, 0);
TimestampLow = BitConverter.ToUInt32(timestampBytes, 4);
Run Code Online (Sandbox Code Playgroud)

这是完整的结构:

public readonly struct Timestamp
{
    public uint TimestampHigh { get; }
    public uint TimestampLow { get; }
    public uint Seconds { get; }
    public uint Microseconds { get; }
    public DateTime LocalTime => new DateTime(EpochTicks + _ticks, DateTimeKind.Utc).ToLocalTime();

    private const ulong MicrosecondsPerSecond = 1000000UL;
    private const ulong HighFactor = 4294967296UL;
    private readonly …
Run Code Online (Sandbox Code Playgroud)

.net c# performance .net-4.0 c#-7.3

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

Span&lt;T&gt; 范围运算符没有意义

我一生都无法理解 Span 的 Range 运算符背后的逻辑。

我有一个包含 IP 协议标头的以下字节数组:

---------------------------------------------------------------------------------
|   |   |   |   |   |   |   |   |   |   | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 9 |
| 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 …
Run Code Online (Sandbox Code Playgroud)

.net c# c#-8.0 .net-5

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