小编Bru*_*ant的帖子

.Net库用于分割卷zip文件?

我需要使用.Net创建跨区(多卷)zip文件,但我无法找到一个可以让我这样做的库.

跨区zip是一个zip压缩文件,分为多个文件,通常具有.z00,.z01等扩展名.

该库必须是开源的或免费的,因为我将把它用于开源项目.

(这是这个问题的重复,但那里没有答案,我也不打算使用ASP特定的)

c# zip

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

Interop,Native DLL和Visual Studio构建过程

令人困惑的标题,令人困惑的问题,但我希望我能引起你的注意.要点:

我有一个包含三个项目的VS解决方案.

  1. Project1:一个Native DLL interop包装器,它导入Native.dll.
  2. Project2:一个WinForms项目,它调用Project1包含的包装器.
  3. Project3:一个MSTest项目,用于调用Project1 Project2 包含的包装器.

我在Project1中包含了Native.dll ,并将其配置为复制到输出文件夹.

此设置将导致DllImport失败,表示无法找到目标DLL.原因很简单.我正在运行Project 2或3,并且在每种情况下:

  • Project2:构建时,它复制构建过程生成的Project1.dll但不复制Native.dll.运行代码时,该文件夹是$ ProjectDir\bin\Debug(或release),并且Native.dll不可用.

  • Project3:这是一个MSTest项目; 当要求运行所有测试时,它会编译应用程序并将输出exe和dll复制到输出文件夹.但是它不会复制Native.dll.

在这两个示例中,DLL都被复制到Project1的调试文件夹,这是无用的.

有没有一种简单的方法来纠正这个项目?简单来说,我的意思是我想避免使用Post Build进行复制或其他手动过程.我还想尝试避免使用绝对路径来复制.dll.

我正在使用Visual Studio 2010.

谢谢!

更新:上面的场景说明Project3引用了Project1,但事实并非如此.Project3引用Project2,引用Project1.在这种情况下,Native.dll将复制到Project2输出文件夹,但不会复制到Project3输出文件夹.我还添加了类库类型的Project4,添加了对Project2的引用,它也没有复制.

换句话说,如果项目P [A]具有带有"复制到输出"规则的项目X并且P [B]引用它,则P [B]也复制X.但是,如果P [C]引用P [ B],它忽略了复制规则.

c# visual-studio

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

Resharper Test Runner抢断焦点

虽然有一个:每当我使用热键(CTRL + U,CTRL + R)使用R#进行测试时,转轮窗口都会获得焦点.这破坏了我的表现.

有没有人知道我做了什么导致这种情况?IIRC,直到昨天才这样.

resharper

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

为什么.Net中的常量都不是大写的?

.Net的Microsoft命名约定将常量放在Pascal Case中.实际上,它明确告诉我们要避免对常量使用全部大写:

您可能还必须将标识符大写以保持与现有的非托管符号方案的兼容性,其中所有大写字符通常用于枚举和常量值.通常,这些符号在使用它们的程序集之外不应该是可见的.

来自MSDN.

就这么,我发现关于这个问题的一些问题,像这样的一个,但我无法找到一个理由.所以,任何人都知道或有一个参考,指出为什么MS选择这个约定?

.net constants naming-conventions

7
推荐指数
2
解决办法
4140
查看次数

.Net字典和等于的重写

我知道当我创建一个自定义类作为键的字典时,我提供密钥时的匹配是通过引用比较完成的.例如:

public class SomeClass
{
    public object SomeValue { get; set; }
}

// ....
public static void Main()
{
    var dict = new Dictionary<SomeClass, string>();

    var key1 = new SomeClass { SomeValue = 30 };
    dict[key1] = "30";

    Console.WriteLine(dict[key1]); // prints "30"

    var key2 = new SomeClass { SomeValue = 30 };
    Console.WriteLine(dict[key2]); // prints null 
}
Run Code Online (Sandbox Code Playgroud)

如果我在SomeClass类中重写Equals(和==)会发生什么?我会在输出的第二行得到"30"吗?

如果我想要一个基于引用而不是成员值的字典,但是我已经覆盖了Equals,该怎么办?

谢谢!!

.net dictionary

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

如何使用CodeDOM创建泛型类,其泛型参数是我创建的类型?

我有一个使用CodeDOM创建的类:

CodeTypeDeclaration some_class = new CodeTypeDeclaration("SomeClass");
// ... properties and methods creation elided
Run Code Online (Sandbox Code Playgroud)

我想创建一个"SomeClass"类型的List.但是,我似乎无法这样做:

var list_type = new CodeTypeReference(typeof (List<>).Name, ??? some_class ???);
var member_field = new CodeMemberField(list_type, field_name)
                                      {
                                               Attributes = MemberAttributes.Private,
                                      }; 
Run Code Online (Sandbox Code Playgroud)

CodeTypeReference不接受a CodeTypeDeclaration,这是我需要的.我能做什么?我并不想通过类的字符串名字,因为这可能会导致错误.

c# codedom

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

Node是否需要收集缓存垃圾?

NodeJS需要加载模块的函数,有一个"缓存"(它是一个对象).

条目是这个缓存是垃圾收集一旦我不再使用该模块?(如果再次使用,将导致从磁盘加载)

我认为答案是"不",但我没有在网上找到任何参考

node.js

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

我可以使用 GitHub 操作运行 docker 容器吗?

我想使用依赖于 Docker Hub 中发布的容器的测试来执行 CI。是否可以?我可以启动容器并运行依赖于它的测试吗?

github-actions

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

在Crash上重新启动应用程序

如果发生未处理的异常,我需要重新启动我的应用程序.我想模仿Word或甚至Visual Studio等Office应用程序,当应用程序崩溃或挂起(停止响应)时,会显示弹出窗口并询问用户是否要重新启动应用程序或将其终止.

我不知道它是如何做,因为它可能是我的应用程序有完全彻底崩溃(如解释在这里).现在我正在考虑某种形式的Watchdog或Launcher应用程序,但我的直觉告诉我,这不是我提到的应用程序的方式.

因此,任何关于"最佳"或"最常被接受"的方式的任何亮点都将非常感激.

一如既往,感谢大家的关注.

.net

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

如何设置VSCode以使用Visual C++ Build Tools for Windows

使用Visual Studio Code和MSFT自己的C/C++扩展(ms-vscode.cpptools),可以在Windows中轻松编辑C/C++,具有良好的语法突出显示和令人难以置信的智能感知支持,而无需安装Visual Studio.

使用Visual C++构建工具,可以在Windows中进行C/C++编译(尽管如此,make在复杂项目中,缺少和使用MSBuild会导致某些困难).

但是,我无法配置VSCode以使用工具和构建方法转到命令行.有没有人有一个教程,并知道要实现简单集成的主要步骤?

请注意,我问的是使用Visual C++ Build Tools for Windows.

c++ windows visual-studio-code

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