小编Ben*_*jol的帖子

在Visual Studio中卸载项目时,如何处理引用?

在Visual Studio中卸载项目时,任何引用项目都会在对已卸载项目的引用上获得警告三角形.我自己写了一个宏来做聪明的事情(检测添加/删除项目并将任何引用转换为文件/项目依赖项),但我不能相信我没有错过更简单的东西.如果我必须手动更改引用(并打破'个人解决方案/共享项目'团队开发范例),卸载功能如何可以使用.

(这个问题与关于在Visual Studio中构建大型解决方案的问题的答案有关 - 一些答案提到了包含大量项目的解决方案,但是"卸载"未使用的项目以提高性能.)

projects-and-solutions reference visual-studio

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

从F#中的n-ary树中提取叶子路径

受到这个问题的启发,我想尝试用最新的思考这个挑战,使用F#

我的方法可能完全偏离正轨,但在解决这个问题的过程中,我试图得到一个数字0-9的所有排列的列表.

我正在寻找使用像这样的n-ary树来解决它:

type Node = 
    | Branch of (int * Node list)
    | Leaf of int
Run Code Online (Sandbox Code Playgroud)

我对自己很满意,因为我已经设法弄清楚如何生成我想要的树.

我现在的问题是我无法弄清楚如何遍历这个树并将每个叶子的'path'作为int提取出来.令我困惑的事情是我需要匹配单个节点,但我的"外部"功能需要采用节点列表.

我当前的尝试几乎做了正确的事情,除了它返回我所有路径的总和......

let test = Branch(3, [Branch(2, [Leaf(1)]);Branch(1, [Leaf(2)])])

let rec visitor lst acc = 
    let inner n = 
        match n with
        | Leaf(h) -> acc * 10 + h
        | Branch(h, t) -> visitor t (acc * 10 + h)
    List.map inner lst |> List.sum

visitor [test] 0 //-> gives 633 (which is 321 + 312)
Run Code Online (Sandbox Code Playgroud)

我甚至不确定这是尾递归. …

algorithm f# n-ary-tree

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

有没有人尝试使用Lyx和noweb进行C#的文字编程

昨天我发现了这篇博客文章,它再一次让我想尝试一下文字编程.

有没有其他人尝试为C#进行文字编程?我想知道尝试Lyx + noweb,但想知道你是否有其他经验或建议.

c# noweb literate-programming lyx

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

期待LexBuffer <char>但是给出了一个LexBuffer <byte>类型'char'与'byte'类型不匹配

类型不匹配.期待 LexBuffer<char> 但是给定a LexBuffer<byte> 类型'char'与'byte'类型不匹配

这是我在使用fslex时收到的错误消息.我试过手动检查每次出现的lexbuf及其类型.它是LexBuffer<char>无处不在.但编译器仍然给我上述错误.你能否告诉我为什么会出现这种错误以及如何解决它.

{
    open System
    open Microsoft.FSharp.Text.Lexing
    open Microsoft.FSharp.Text.Parsing

    let lexeme (lexbuf : LexBuffer<char>) = new System.String(lexbuf.Lexeme)
    let newline (lexbuf:LexBuffer<char>) = lexbuf.EndPos <- lexbuf.EndPos.NextLine
    let unexpected_char (lexbuf:LexBuffer<char>) = failwith ("Unexpected character '"+(lexeme lexbuf)+"'")
}

let char = ['a'-'z' 'A'-'Z']
let digit = ['0'-'9']
let float = '-'?digit+ '.' digit+
let ident = char+ (char | digit)*
let whitespace = [' ' '\t']
let newline = ('\n' | '\r' '\n')

rule tokenize = parse
    | …
Run Code Online (Sandbox Code Playgroud)

f# fslex

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

Groking git远程使用

我已经在自己的机器上玩'git'已经6个月了,而且非常喜欢它.

但是,我发现很难真正理解如何在团队/企业环境中使用它.(我想知道Eric Sink是否正确).

我开始尝试在Windows上安装git服务器,但这并没有太顺利.

所以我想知道在我自己的机器上设置第二个存储库并开始拉动/推动它.

你知道有什么好的文章可以像这样开始'简单',或者你有任何关于下一层次的提示吗?

git

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

卡巴斯基对我的构建前/构建后事件感到窒息

显然,VS 将构建后和构建前事件包装在一个 cmd 文件中,它会弹出到 LocalSettings/Temp 文件夹中。卡巴斯基突然(昨天工作正常)决定这是一个威胁(RootShell 风险),并将它们置于隔离状态,这使我的 VS 挂起,并且无法编译项目(除了通过它们全部手动删除事件)。

这里的系统管理员 - 可以理解 - 不热衷*.TMP.EXEC.CMD于对 LocalSettings/Temp 文件夹中的文件进行通配符异常处理。到目前为止,我的 Google-fu 还没有帮助我。

有没有人遇到过这个问题或有任何提示?

编辑FWIW,与 git、SmartGit 和其他程序负载相同的问题。卡巴斯基为了自己的利益而变得聪明......

antivirus visual-studio

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

在F#中使用MSTest

是否可以在VS2010中使用带F#的MSTest.人们多次提出这个问题.但我似乎无法在答案中找到解决方案.有没有人能够使用MSTest进行F#单元测试,还是应该坚持使用NUnit?

.net f# unit-testing mstest

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

VS 构建工具 2019 16.6.0 中的 F# 损坏

安装此版本后,不会构建任何涉及 F# 的内容,一切都会引发相同的异常:

error FS0193: Could not load file or assembly System.Buffers, Version=4.0.3.0, blablabla..
Run Code Online (Sandbox Code Playgroud)

显然这与我正在构建的内容无关。即使尝试let x = 3在 fsi.exe 中执行也有同样的问题。

还有其他人有这个问题吗?

f#

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

结合 Interlocked.Increment 和 Volatile.Write

我一直在查看 System.Reactive 的源代码(这里),它把我带到了这个地方,在同一个变量上有一个Volatile.Read后跟Interlocked.CompareExchange, :

if (Volatile.Read(ref _runDrainOnce) == 0
    && Interlocked.CompareExchange(ref _runDrainOnce, 1, 0) == 0)
{
    //do something
}
Run Code Online (Sandbox Code Playgroud)

当我阅读它时,其逻辑是“如果 runDrainOnce 为 0,并且在我将其更改为 1 之前它为零”。这里有什么微妙的吗?为什么第一次检查不是多余的?

(更令人难以置信的是,在同一个函数中有 alock和 a Monitor.Pulse。这是下注的结果吗?:))

整个功能:

private void Schedule()
{
    // Schedule the suspending drain once
    if (Volatile.Read(ref _runDrainOnce) == 0
        && Interlocked.CompareExchange(ref _runDrainOnce, 1, 0) == 0)
    {
        _drainTask.Disposable = _scheduler.ScheduleLongRunning(this, DrainLongRunning);
    }

    // Indicate more work is to be done by the drain loop …
Run Code Online (Sandbox Code Playgroud)

c# concurrency volatile

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

异常超越 Application.ThreadException 和 AppDomain.CurrentDomain.UnhandledException

我遇到了应用程序挂起的问题,并给了我默认的“请告诉 Microsoft 有关此问题”的弹出窗口,而不是应用程序中的“未处理的异常”对话框。

在应用程序代码中,Application.ThreadException 和 AppDomain.CurrentDomain.UnhandledException 都被重定向到一个方法,该方法将错误日志写入磁盘、将屏幕截图保存到磁盘并显示友好的对话框。

但是当这个错误发生时,这三件事都不会发生。我在事件查看器中得到的只是:

事件类型 clr20e3、P1 myapp.exe、P2 4.0.0.0、P3 47d794d4、P4 mscorlib、P5 2.0.0.0、P6 471ebc5b、P7 15e5、P8 27、P9 system.argumentoutofrange、P10 NIL

鉴于该错误似乎只在应用程序运行几个小时后才会发生,我想知道这是否可能是内存泄漏问题。我搜索了一些“clr20e3”,但只找到了 ASP.Net 的东西。我的应用程序是 Windows Forms (.Net 2.0) exe,使用了相当多的程序集 - 使用 C# 和一些非托管 C++。

我想这也可能是错误处理方法中的错误 - 正如一些答案所建议的那样,我可能会尝试在错误处理程序的开头进行日志记录(但考虑到这几乎就是我所做的......)。

任何解决此问题的帮助都将不胜感激 - 无论是解决方案还是如何找出问题根本原因的建议。

更新:原始错误的根本原因是访问具有负索引的数组(即 system.argumentoutofrange)。为什么这没有被捕获对我来说有点神秘,但考虑到两个异常都被发送到相同的处理代码,我想知道是否可能不存在(例如)两者都被调用并争夺资源的情况(例如日志文件)?

我通过在错误处理代码中执行任何其他操作之前执行 EventLog.WriteEntry 来证明这一点。现在添加了一个标志以防止在错误处理中重新进入,我似乎不再有问题......

c# exception

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