小编Ada*_*her的帖子

从Visual Studio文本选择中获取Roslyn SyntaxToken(插入位置)

我试图在Visual Studio扩展包中的VSSDK和Roslyn SDK之间架起桥梁,并且一直很难用.Visual Studio提供的ActivePoint.AbsoluteCharOffset与使用FindToken(offset)时从Roslyn获取的元素不匹配.我很确定这与我的当前工作黑客的每一方如何计算EOL字符有关,但我不是100%,我的黑客将长期坚持.

我的黑客就是这条线: charOffset += point.Line;

我在char偏移量上添加行数,这似乎有效,所以我猜我正在添加所有被activepoint计数忽略的换行符.

助手

private VisualStudioWorkspace workspace = null;
public RoslynUtilities(VisualStudioWorkspace workspace)
{
    this.workspace = workspace;
}
public Solution Solution { get { return workspace.CurrentSolution; } }
public Document GetDocumentFromPath(string fullPath)
{
    foreach (Project proj in this.Solution.Projects)
    {               
        foreach (Document doc in proj.Documents)
        {
            if (doc.FilePath == fullPath)
                return doc;                   
        }
    }
    return null;
}
public SyntaxTree GetSyntaxTreeFromDocumentPath(string fullPath)
{
    Document doc = GetDocumentFromPath(fullPath);
    if (doc != null)
        return doc.GetSyntaxTreeAsync().Result;
    else
        return null;
} …
Run Code Online (Sandbox Code Playgroud)

c# visual-studio visual-studio-extensions roslyn visual-studio-2015

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

如何强制进程由另一个进程启动

我有一个AutoUpdater应用程序,可以启动另一个应用程序.无论如何强制第二个应用程序只有在AutoUpdater启动时才能运行?

问题是,一些最终用户将在其桌面上创建主应用程序文件的快捷方式.这成为一个问题,因为它应该在启动之前检查应用程序的更新,并且它们不会收到我们的更新.

我有一个想法是通过WCF创建一个IPC通道,并从AutoUpdater向另一个应用程序发出一个非常简单的命令.如果其他应用程序在2或3秒内没有收到该命令,它将自行关闭.

这似乎比应该需要的代码/开销更多.有没有更简单的方法?

谢谢!

c# winforms

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

两个不同的表达式导致c#和excel

我发现一些非常奇怪的东西,如果我在excel和c#中使用下面的表达式,我会得到不同的结果.

(1) ^ (-12)
Run Code Online (Sandbox Code Playgroud)

Excel给出1和c#给出-11.

哪一个是对的?

c# excel

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

带有自定义 ToolStripControlHost 的 ToolStrip 使 Tab 键顺序焦点变得奇怪

我正在经历一些奇怪的行为。让我试着解释一下,我将代码精简到最低限度,但问题仍然存在。所以首先,我使用 VS2013 和 .NET 4.0,我使用的是 Windows 8.1。

所以我有一个自定义UserControlTextBox多数民众赞成正在通过使用ToolStripControlHost,如果我专注于这个文本框和命中TAB通过控制这个文本框的左侧,它只是个周期。如果我将它聚焦并点击SHIFT+ TAB,它会在它右侧的按钮之间循环。

在此处输入图片说明

所以这是我的表格的一个例子。中间的文本框是一个自定义控件。我的代码(尽可能简化)如下所示:

[ToolStripItemDesignerAvailability(ToolStripItemDesignerAvailability.ToolStrip | ToolStripItemDesignerAvailability.StatusStrip)]
public class ToolStripTestControl : ToolStripControlHost
{
    public ToolStripTestControl() : this(new TestControl()) { }
    public ToolStripTestControl(Control c) : base(c) { }
}

public class TestControl : UserControl
{
    private TextBox _textBox = new TextBox();

    public TestControl()
    {
        _textBox.Dock = DockStyle.Fill;
        this.Controls.Add(_textBox);
    }

    protected override Size DefaultMinimumSize { get { return new Size(100, 22); } }
}
Run Code Online (Sandbox Code Playgroud)

只需创建一个新的 …

c# winforms toolstripcontrolhost

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

用于C#/ .NET代码分析的API

我不确定标题是否准确描述了我想要问的内容......

基本上,Visual Studio如何查看CSPROJ中的代码文件并确定方法或变量的引用,或者using代码中是否未使用语句?显然,它不仅仅是进行简单的文本解析,而且它似乎在进行构建之前工作,因此我认为它不会引用程序集/ CLR.

我是否可以从外部应用程序绑定一个API,如果我让用户选择他们的CSPROJ或SLN文件,并且能够报告using文件中未使用的语句,或者在代码中没有被调用的方法/变量?

我问,因为我正在考虑构建某种报告工具来显示可能发生代码清理的区域,但我不确定从哪里开始.

谢谢!

编辑:作为一个后续问题,有没有类似的工具?

.net c#

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

如何从字符串中获取验证器函数

如何将以下字符串数组转换为类型数组(或函数?或者这些验证器是什么......)

let valStrings: string[] = ["Validators.required", "Validators.maxLength(10)"];
Run Code Online (Sandbox Code Playgroud)

并将其转换为:

let validators: ValidatorFn[] = [ Validators.required, Validators.maxLength(10) ];
Run Code Online (Sandbox Code Playgroud)

我有一个返回验证规则的网络服务。这是尝试集中所有验证规则,以保持服务器和客户端验证同步,因此字符串来自HttpClient具有 JSON 结果的调用。当然,我们仍然将实际的实现分开,但至少两者定义的规则应该相同。

该验证器数组将被传递到 a 中,FormControl以利用 Angular 中的反应式表单进行客户端验证。

eval()这是应该使用的地方吗?

谢谢你-亚当

typescript angular angular5

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

如何在Javascript中更改变量的颜色?

这是我的代码:

var hi = "hi"
document.write(hi)

hi.style.color="#ff0000";
document.write(hi)
Run Code Online (Sandbox Code Playgroud)

为什么它不会改变颜色?我一直得到"无法读取未定义的属性'样式".

javascript colors

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