小编ang*_*son的帖子

隐藏名称空间只包含类库中的内部类型?

我有一个类库,有几个名称空间只包含内部类型.

但是,在应用程序项目中使用类库时,名称空间显示在intellisense中,但当然它们是空的.在其他项目中使用intellisense时,有什么方法可以完全隐藏命名空间吗?

我也试图应用于EditorBrowsableAttribute所有内部类,但我想做的是将其应用于命名空间,这当然是不可能的.

或者,如果我足够关心这个,我必须将类型移动到包含公共类型的命名空间中的唯一选择?

c# intellisense namespaces internal hide

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

除StatSVN之外的Subversion存储库统计信息?

是否有其他开源/免费包用于为Subversion存储库生成存储库统计信息?

我已经尝试过StatSVN,但它似乎与Subversion 1.5及更高版本的日志文件不兼容.

注意,我知道TortoiseSVN在其对话框和存储库浏览代码中内置了一些统计信息,但这不是我正在寻找的.

我正在寻找的是一个可以分析存储库及其日志的工具,并生成如下统计信息:

  • 谁签了大部分代码
  • 代码随时间增长
  • 繁忙的文件(经常更改)

svn project-management statsvn

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

如何在没有抽象基类的情况下强制覆盖后代中的方法?

问题标题似乎有点混乱,但我会在这里试着澄清我的问题.

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

namespace ConsoleApplication1
{
    public abstract class Employee
    {
        private string name;
        private int empid;
        BenefitPackage _BenefitPackage = new BenefitPackage();
        public string Name
         {
             get { return this.name; }
             set { this.name = value; }
            }
        public int EmpId
        {
            get { return this.empid; }
            set
            {
                if (value == 1)
                    return;
                this.empid = value; }
        }
        public Employee(string Name, int EmpId)
        {
            this.Name = Name;
            this.EmpId = EmpId;
        }
        public Employee() …
Run Code Online (Sandbox Code Playgroud)

.net c# oop

43
推荐指数
6
解决办法
8万
查看次数

从单元测试中抓取发送到Console.Out的输出?

我正在使用NUnit在C#中构建单元测试,并且我想测试主程序实际上输出正确的输出,具体取决于命令行参数.

有没有办法从NUnit测试方法,调用Program.Main(...)抓取写入Console.Out和Console.Error的所有内容,以便我可以验证它?

c# console nunit unit-testing

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

.NET数组的内存布局

.NET数组的内存布局是什么?

以这个数组为例:

Int32[] x = new Int32[10];
Run Code Online (Sandbox Code Playgroud)

我知道数组的大部分是这样的:

0000111122223333444455556666777788889999
Run Code Online (Sandbox Code Playgroud)

其中每个字符是一个字节,并且数字对应于数组中的索引.

另外,我知道所有对象都有一个类型引用和一个syncblock-index,所以上面的内容可以调整为:

ttttssss0000111122223333444455556666777788889999
        ^
        +- object reference points here
Run Code Online (Sandbox Code Playgroud)

另外,需要存储数组的长度,所以这可能更正确:

ttttssssllll0000111122223333444455556666777788889999
        ^
        +- object reference points here
Run Code Online (Sandbox Code Playgroud)

这完整吗?数组中是否有更多数据?

我问的原因是我们试图估计一个相当大的数据语料库的几个不同的内存中表示将占用多少内存,并且数组的大小变化很大,因此开销可能有一个在一个解决方案中产生巨大影响,但在另一个解决方

所以基本上,对于一个数组,有多少开销,这基本上是我的问题.

数组坏队被唤醒之前,解决方案的这一部分是静态构建 - 一次引用 - 通常类型的事情,因此这里不需要使用可增长列表.

.net arrays overhead

41
推荐指数
3
解决办法
7276
查看次数

C#程序可以以某种方式测量自己的CPU使用率吗?

我正在开发一个将运行很长时间的后台程序,我有一个外部日志记录程序(SmartInspect),我希望定期提供一些值,以便在调试时实时监控它.

我知道我可以简单地启动多个程序,比如任务管理器或IARSN TaskInfo,但是我想在我自己的程序中保留所有内容,因为我还想添加一些简单的规则,比如程序使用的多于X%CPU,在日志中标记它.

我有一个后台线程,定期向SmartInspect提供一些统计信息,如内存消耗,工作集等.

这个线程是否有可能合理准确地衡量它消耗的计算机CPU资源量?主程序是单线程应用程序(除了记录统计信息的监视程序线程),因此如果一种技术仅限于单个线程使用多少,那么这也是好的.

我找到了一些与Linux和C的rusage相关的条目.我可以使用类似的东西吗?


编辑:好的,我尝试了性能计数器方式,但每次调用时都添加了大量的GC数据,因此内存使用和垃圾收集的图表飙升.我想我现在就把这部分留下来.

c# cpu monitoring performancecounter

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

摆脱"当前位置没有可用的源代码."

好吧,这是我自己的错,但我似乎无法拯救自己.

每当我尝试进入一个具有调用.NET代码的赋值字段的类时,我会得到一个对话框,其中包含"没有可用于当前位置的源代码"的文本.

错误消息的屏幕截图

例如,单步执行以下类的构造函数会给我上面的消息:

public class Test
{
    private Stack<String> _Dummy = new Stack<String>();
    public Test() { }
}
Run Code Online (Sandbox Code Playgroud)

我认为这是因为在某些时候我摆弄了符号服务器的设置,但不管我现在摆弄什么,我似乎无法摆脱那条消息.

我的愚蠢在哪里忘记了它的作用?


我目前的选择摘要:

  • []启用地址级调试
  • [x]启用我的代码(仅管理)
  • []启用.NET框架源步进
  • []启用源服务器支持
  • 符号文件.pdb位置 - 为空
  • 将符号服务器中的符号缓存到此目录:C:\ temp(空)

debugging message step-into debug-symbols visual-studio

39
推荐指数
4
解决办法
9万
查看次数

LINQPad脚本目录?

有谁知道如何获取LINQPad脚本文件(.linq)所在目录的路径?

或者对于脚本本身而言.

请注意,我不是在谈论"我的查询"文件夹的位置,这是LINQPad中显示的文件夹.

我可以将.linq文件保存在磁盘上的任何位置,然后双击打开它.

例如,如果我将文件保存到C:\Temp\Test.linq并执行程序,我想要或者C:\Temp或者C:\Temp\Test.linq.

基本上我想一些类似于Environment.CurrentDirectory或者Assembly.GetEntryAssembly().Location,只是为了.linq文件.

我试过的事情:

  • 浏览环境变量
  • 查看给我的脚本的LINQPad程序集
  • 抛出异常并查看堆栈跟踪(包含指向其他地方的脚本临时副本的链接)
  • Environment.CommandLine.Dump(); - 提供LINQPad可执行文件
  • Environment.CurrentDirectory.Dump(); - 给出C:\ windows\system32
  • Assembly.GetExecutingAssembly().Location.Dump(); - 给出临时目录

linqpad

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

如何在sql数据库中重新排序行

是否可以重新排序SQL数据库中的行?例如; 如何交换第2行和第3行的值?

行的顺序对我很重要,因为我需要根据顺序显示值.


感谢所有的答案.但'Order by'对我不起作用.

例如,我在数据库中放置了一个书签列表.我想根据查询得到的结果进行显示.(不按字母顺序排列).就在插入它们的时候.

但是用户可以重新排列书签的位置(以他/她想要的任何方式).所以我不能使用'order by'.

一个例子是如何在firefox中的书签中显示书签.用户可以轻松切换位置.我怎么能在DB中提到它?

谢谢.

sql

36
推荐指数
6
解决办法
7万
查看次数

如何使用Mercurial命令行合并摆脱头部,就像我可以用TortoiseHg做的那样?

我的问题是:

  • 如果我的Mercurial存储库中有两个头(带有更改的分支),并且我想要删除其中一个,但是丢弃该分支中的所有更改而不是将它们合并到另一个中,我无法剥离那些变更集所以我必须合并,我怎么能用命令行客户端呢?

如果我在Mercurial存储库中有两个头,并使用TortoiseHg作为我的客户端,则存储库可能如下所示:

两个脑袋

然后我可以test2通过合并和丢弃摆脱头部.首先,我会更新到我想保留的头部(test3在这种情况下,上面的图像中已经是我工作文件夹的当前父级).然后我会右键单击并选择"与...合并":

合并...

在弹出的对话框中,我会选择放弃合并目标的更改(即我想要丢弃所有更改的分支):

合并对话框

合并完成后,test2头部的所有更改都被丢弃了,我可以提交.头已经消失了,但改变仍然是历史的一部分.

我的问题是:如何仅使用命令行客户端执行相同的操作?我找不到该hg merge命令的任何匹配选项:

hg merge [-P] [-f] [[-r] REV]

merge working directory with another revision

... snipped text

options:

 -f --force       force a merge with outstanding changes
 -t --tool VALUE  specify merge tool
 -r --rev REV     revision to merge
 -P --preview     review revisions to merge (no merge is performed)
    --mq          operate on patch repository

use "hg -v help merge" to show global options

编辑:debugsetparents工作得很好:

hg debugsetparents …

merge mercurial branch

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