小编Fit*_*Dev的帖子

docs.microsoft.com上的.NET平台扩展是什么?

Microsoft Docs中有一个名为".NET Platform Extensions"的框架级导航元素.它包含了最近添加的API,如文档System.IO.PipelinesSystem.Threading.Channels例如,以及一大堆其他的API,包括不那么近期的的.

此集合中的一些API可用作nuget包(适用于.Net Core和.Net Framework),但其他API似乎不可用.此外,截至目前,还没有名为".NET Platform Extensions"的nuget包或类似的东西.

那么,问题是这个API集合究竟代表什么?它与以下各项的关系是什么:

  • .Net框架
  • .Net核心
  • .Net标准

.Net Framework/.Net Core中的支持怎么样?

最后,一些API似乎已经作为单独的nuget包提供,其他API尚未提供,那么这方面的故事是什么?

.net nuget nuget-package .net-core .net-standard

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

获取Chrome的"重新计算风格"分析事件受影响的DOM元素

有没有办法真正让Chrome元素参与Chrome的"重新计算风格"活动?

它所说的就像"59个元素".但是,慢慢开始从DOM中删除元素并重新运行时间线分析器以查看它如何影响受影响元素的元素数是非常耗时的.即便如此,仍然很难确定哪些元素可能是负责任的.

同样的问题适用于"更新层树"和"布局"事件.

在此输入图像描述

css performance profiling google-chrome

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

为什么通过Pointer转换结构很慢,而Unsafe.As很快?

背景

我想使几个整数大小structS(即32个64位)是从原始非托管类型具有相同的尺寸能容易转变为/(即Int32UInt32用于特别是32位大小的结构).

然后,结构将公开用于位操作/索引的附加功能,这些功能不能直接在整数类型上使用.基本上,作为一种语法糖,提高可读性和易用性.

然而,重要的部分是性能,因为这个额外的抽象应该基本上是0成本(在一天结束时,CPU应该"看到"相同的位,就好像处理原始的整数一样).

样本结构

以下是struct我提出的最基本的内容.它没有所有功能,但足以说明我的问题:

[StructLayout(LayoutKind.Explicit, Pack = 1, Size = 4)]
public struct Mask32 {
  [FieldOffset(3)]
  public byte Byte1;
  [FieldOffset(2)]
  public ushort UShort1;
  [FieldOffset(2)]
  public byte Byte2;
  [FieldOffset(1)]
  public byte Byte3;
  [FieldOffset(0)]
  public ushort UShort2;
  [FieldOffset(0)]
  public byte Byte4;

  [DebuggerStepThrough, MethodImpl(MethodImplOptions.AggressiveInlining)]
  public static unsafe implicit operator Mask32(int i) => *(Mask32*)&i;
  [DebuggerStepThrough, MethodImpl(MethodImplOptions.AggressiveInlining)]
  public static unsafe implicit operator Mask32(uint i) => *(Mask32*)&i;
}
Run Code Online (Sandbox Code Playgroud)

考试

我想测试这个结构的性能.特别是我想知道如果我使用常规的逐位算术,它是否可以让我快速获得单个字节 :( (i >> …

c# performance struct unsafe c#-7.2

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

为什么ref结构不能用作类型参数?

C#7.2 介绍了 ref struct s.但是,考虑到ref struct这样的:

public ref struct Foo {
  public int Bar;
}
Run Code Online (Sandbox Code Playgroud)

我不能将它用作类型参数:

int i = 0;
var x = Unsafe.As<int, Foo>(ref i); // <- Error CS0306 The type 'Foo' may not be used as a type argument.
Run Code Online (Sandbox Code Playgroud)

我知道ref结构只能存在于堆栈中,而不能存在于堆中.但是,如果使用这种引用结构的泛型方法保证永远不会将它们放在堆上,如上面使用System.Runtime.CompilerServices.Unsafe包的示例,该怎么办?为什么我不能在这些情况下使用它们作为类型参数?

c# ref-struct c#-7.2

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

具有引用返回 Get 的 C# 索引器也支持集

我在这里做错了什么,或者从 C# 7.2 开始,不支持通过 ref 返回和允许设置的索引器?

作品:

public ref byte this[int index] {
  get {
      return ref bytes[index];
  }
}
Run Code Online (Sandbox Code Playgroud)

也有效:

public byte this[int index] {
  get {
      return bytes[index];
  }
  set {
    bytes[index] = value;
  }
}
Run Code Online (Sandbox Code Playgroud)

失败:

public ref byte this[int index] {
  get {
      return ref bytes[index];
  }
  set { //<-- CS8147 Properties which return by reference cannot have set accessors
    bytes[index] = value;
  }
}
Run Code Online (Sandbox Code Playgroud)

也失败:

public ref byte this[int index] {
  get {
      return ref …
Run Code Online (Sandbox Code Playgroud)

indexer ref c#-7.2

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

如何将受管.NET程序集从内存中保存为EXE/DLL文件

我想知道它是否尽可能,如果是这样 - 如何保存动态加载的.net程序集(它是从字节数组而不是文件加载)到磁盘上的文件(exe/dll取决于组件)和能够直接使用它(即,如果它是EXE,它包含所有exe头和可运或者至少是"可反射").

加载的程序集实际上也完全按照它们出现在文件中的方式存储在内存中,即所有PE EXE头文件,资源等,即内存中的exe/dll文件,或者它们以不同方式存储在内存中,因此它不会可以将一些内存区域保存为dll/exe .net程序集吗?也就是说,如果我可以使用图像中的类比:您可以将jpeg文件作为位图加载到内存中,其中表示内存中图像的实际字节将与表示jpeg文件的实际字节完全不同.加载组件也一样吗?

最后,我如何获得程序集实际位于进程内存中的内存地址(指针)?

只是为了澄清:我无法访问通过Assembly.Load()加载程序集的初始字节数组.

这是一个相关的问题,但是从答案中不清楚是否可能有一种方法将通过字节数组加载的程序集从内存转储到磁盘上的文件.

谢谢.

.net reflection .net-assembly

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

System.Drawing(GDI +)vs System.Windows.Media(WPF)vs Direct2D + DirectWrite + WIC

对于处理图像并将用C#编写的桌面Vista +应用程序,您会推荐以下哪种技术(或者您推荐的组合:System.Drawing(GDI +)vs System.Windows.Media vs Direct2D + DirectWrite + WIC.图像处理将涉及各种原始绘图,填充,处理文本,旋转,翻译,缩放,使用指针直接处理像素数据.一般来说,上述技术在操作位图方面有多好?

此外,如果有人知道一个好的和详细的比较图表,列出了并排的不同功能和等价物,以及不支持的,这将是伟大的!例如,WPF和Direct2D中是否存在ColorMatrix等价物?例如,在研究了SharpDX对Direct2D的实现后,我留下的印象是即使微软将其定位为GDI +的完全替代品,我也无法在Direct2D中找到所有GDI +的功能.

另外,考虑到它是2014年,你会说至少对于图像处理(如果不是UI的一部分,WPF似乎是一个更好的选择),GDI +在接下来的5年左右会好吗?或者我应该真的考虑使用所有3种技术,哪种方法效果最好?

谢谢.

.net wpf graphics gdi+ direct2d

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

如何让 GIT 将目录连接视为 Windows 上的常规文件夹?

我需要共享以在不同项目之间共享某些文件。因此我有一个像这样的文件结构:

D:\shared\
D:\shared\files-shared-by-all-projects-here

D:\project1\
D:\project1\project1-specific-files-here
D:\project1\shared <- directory junction to D:\shared

D:\project2\
D:\project2\project2-specific-files-here
D:\project2\shared <- directory junction to D:\shared
Run Code Online (Sandbox Code Playgroud)

我已经设置了 GIT 存储库D:\project1D:\project2我的问题是 GIT 似乎只跟踪非连接(即真实目录)中的文件。

我对两个项目都使用 Visual Studio 2015,当项目具有来自“连接”目录的文件时,它的团队资源管理器的行为会非常奇怪:

  • 将驻留在目录连接中的文件添加到项目后,团队资源管理器将仅在要提交的更改列表中显示其父目录(连接),而不是文件本身。
  • 提交所有更改(即已添加文件)后,解决方案资源管理器将所有文件显示为正在跟踪和签入(包括那些驻留在联结中且在添加后显示在挂起更改列表中的文件:

git1

  • 编辑显示为已签入并驻留在联结目录中的文件将使其看起来已签出

git2

  • 现在返回到团队资源管理器,签出的文件显示在修改文件列表中:

git3

  • 但是,尝试提交失败并显示一条消息:“发生错误。详细消息:无更改;没有任何可提交的内容。”

git4

  • 返回到解决方案资源管理器,提交失败的已更改文件仍显示为已签入:

git5

例如,使用 Tortoise GIT从 Visual Studio 外部显式添加驻留在共享目录中的文件(即通过 引用它D:\project2\shared\some-shared-file)不起作用:添加失败并显示它既是文件又是目录的消息。

git6 git7

以上是通过一个新的测试项目完成的,其中frame驻留在项目根目录中的目录实际上是一个结点。

然而,在我的实际项目中,情况略有不同......例如,如果我使用 Tortoise GIT 浏览存储库,它实际上会将驻留在连接中的共享文件显示为被跟踪和签入以及存储库的一部分。但是,一旦我在 Visual Studio 中打开该项目,它就会将解决方案资源管理器和团队资源管理器更改中的相同文件显示为“待删除”。那么这是一个 VS 怪癖吗?

所以最重要的是,我只想知道如何使驻留在目录连接中的文件与常规文件一样被视为项目的一部分,以便它们被正确签出并重新签入并构成项目的一部分(回购的)历史?

windows git version-control visual-studio junction

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

有效地将依赖关系与电子应用程序捆绑在一起

我试图找出一种有效的方法来捆绑和分发各种依赖项(节点模块和/或"客户端"脚本和框架,如Angular)与我的电子应用程序.

虽然基本方法npm install module-name --save适用于开发,但最终在最小化应用程序的大小和在运行时使用缩小的资源时却不太好.例如,几乎所有的npm软件包(包括节点模块)都带有很多"额外的包袱",如自述文件,各种版本的组件(缩小,未缩小,ES2015,无ES2015等).虽然这些文件非常适合开发,但所有这些文件绝对不需要包含在您要分发的版本中.

目前似乎有两种方法来解决问题:

  • Electron Builder建议使用双文件package.json系统.
  • 在开发期间使用的任何依赖项应仅使用npm安装--save-dev,然后在构建应用程序以进行分发时应使用prunning.

在这方面,我有几个问题:

  1. 我不太确定为什么需要2文件package.json系统,如果可以--save-dev在实际的应用程序构建/编译期间安装dev-only modules/dependencies 然后使用修剪?
  2. 无论使用上述哪种方法,您仍然可以在应用程序中使用完整的npm软件包,包含应用程序未使用的所有杂项/重复文件.那么一个"修剪"如何说npm包本身,以便只包含在运行时使用的实际文件(如缩小的脚本)?
  3. Bower用于"客户端"软件包(如AngularJS 2,Bootstrap,jQuery等)并将npm用于节点模块(如fs-extra)是一个更好的选择,只要分离关注点和以后轻松捆绑?
  4. 可能的WebPack被用来生产出需要的文件,至少对"cient方",因此只有真正的节点模块将被包含在应用程序,而它的其余部分将在网络包编集的形式的文件?
  5. 关于如何在实践中认可这种依赖关系和分布的实用技巧?咕嘟咕嘟的脚本?网络包脚本?项目结构?

谢谢.

node.js npm webpack electron

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

为什么不能在 C# 7.2 的结构中同时使用只读和固定大小的缓冲区

随着 C# 7.2 的发布,现在可以使用readonly结构体,这在许多情况下可以提高性能。

对于我的结构之一,我使用固定大小的字节数组来实际保存数据。但是,当我标记struct和 字节数组字段时readonly,C# 编译器抱怨readonly该字段无效。为什么我不能在一个字段上同时拥有fixed和?readonlystruct

readonly unsafe struct MyStruct {
  readonly fixed byte _Value[6]; //The modifier 'readonly' is not valid for this item.
}
Run Code Online (Sandbox Code Playgroud)

c# struct unsafe c#-7.2

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

使成员成为虚拟成员可防止调用默认接口实现并导致 C# 8 中的 StackOverflowException

考虑代码:

class ChildClass : BaseClass {

    public void Method1() {} //some other method

}

abstract class BaseClass : IChildInterface {

    public
    virtual //<- If we add virtual so that this method can be overridden by ChildClass, we get StackOverflowException and DoWork() implementation in IChildInterface is never called.
    void DoWork() {
     //base class specific implmentation
     ((IChildInterface)this).DoWork(); //call into default implementation provided by IChildInterface
    }

}

interface IChildInterface : IBaseInterface {

    void IBaseInterface.DoWork() {
     //implmentation
    }

}

interface IBaseInterface {

    void DoWork(); …
Run Code Online (Sandbox Code Playgroud)

.net c# c#-8.0 .net-core-3.0 default-interface-member

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

使div垂直固定,但水平粘贴到页面的边框

您能否请访问:http://www.binarymark.com/Products/ColorPickerPro/default.aspx并注意页面的布局.

我想要做的是将一些小div粘贴或"粘合"到页面的右侧,这样它就在页面的右边框之外.

但是,垂直方式我想将div固定到一个Window,无论页面滚动多少,它都应该保持距窗口顶边300px的固定位置.

这是它应该是什么样子http://www.binarymark.com/layexp.png

你能帮我吗?

看起来很简单,但我不知道如何组合垂直固定定位和水平相对/绝对定位,并确保它支持所有主流浏览器.

谢谢.

html css positioning fixed

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

在与大多数桌面和 Web 电子邮件客户端兼容的 HTML 电子邮件中为图像添加叠加层

2017 年是否有办法在HTML 电子邮件内的主图像上显示基于图像或基于文本的叠加层,以便大多数当前桌面和 Web 电子邮件客户端正确呈现它:Outlook 2007+、Thunderbird、Mobile客户端、GMail、Outlook.com、雅虎邮箱等?

例如,它可能是一个在主图像上呈现的小播放按钮,点击后会将您带到视频网址。

html email email-client html-email

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