小编Jef*_*f E的帖子

转到定义:"无法导航到插入符号下的符号."

今天我在项目中突然遇到问题,单击Go To Definition会给我一个奇怪的错误:"无法导航到插入符号下的符号."

在此输入图像描述

我首先注意到通过NuGet 安装Costura.Fody后的一段时间.我已经卸载了它,但问题仍然存在.我多次清理并重建了解决方案.在我的git提交历史中,在此开始发生的时间点之前或之后,没有任何"Fody"或"Costura"的实例,所以我认为我的.gitignore文件中的一个卡在一个坏的州.

如果目标定义在另一个文件中,则只会出现此问题; 转到当前打开的文件中的内容定义工作正常.Peek Definition也可以正常工作.其他解决方案/项目也可以正常工作 - 只有这一点才会导致问题.

我正在使用Visual Studio 2015. 2013版本似乎没有出现此问题.

为什么会出现此错误,如何解决?

c# visual-studio visual-studio-2015

65
推荐指数
11
解决办法
9万
查看次数

了解ZMODEM协议

我需要在我的程序中包含基本的文件发送和文件接收例程,它需要通过ZMODEM协议.问题是我无法理解规范.

作为参考,这是规范.

规范没有定义各种常量,所以这里是来自Google的头文件.

在我看来,在该文档中有许多重要的事情未定义:

  • 它经常引用ZDLE编码,但它是什么?我什么时候使用它,什么时候不使用它?
  • 在ZFILE数据帧之后,传输文件的元数据(文件名,修改日期,大小等).接下来是ZCRCW块,然后是根据规范未定义类型的块.据称ZCRCW块包含一个16位CRC,但规范没有定义CRC计算的数据.
  • 它没有定义它使用的CRC多项式.我偶然发现CRC32 poly是标准的CRC32,但我对CRC16 poly没有这么好的运气.没关系,我通过反复试验找到了它.CRC16多晶硅是0x1021.

我环顾四周寻找参考代码,但我能找到的是从90年代早期开始的无法读取的无证件C文件.我也从MSDN中找到了这组文件,但它与我运行的测试有点模糊和矛盾:http://msdn.microsoft.com/en-us/library/ms817878.aspx(你可能需要通过谷歌的缓存查看)

为了说明我的困难,这是一个简单的例子.我在服务器上创建了一个包含"Hello world!"的纯文本文件,它名为helloworld.txt.

我使用以下命令从服务器启动传输:

sx --zmodem helloworld.txt
Run Code Online (Sandbox Code Playgroud)

这会提示服务器发送以下ZRQINIT帧:

2A 2A 18 42 30 30 30 30 30 30 30 30 30 30 30 30   **.B000000000000
30 30 0D 8A 11                                    00.Š.
Run Code Online (Sandbox Code Playgroud)

这有三个问题:

  • 填充字节(0x2A)是否是任意的?为什么这里有两个,但在其他情况下只有一个,有时没有?
  • 该规范最后没有提到[CR] [LF] [XON],但是MSDN文章的确如此.为什么会这样?
  • 为什么[LF]设置了位0x80?

在此之后,客户端需要发送ZRINIT帧.我从MSDN文章中得到了这个:

2A 2A 18 42 30 31 30 30 30 30 30 30 32 33 62 65   **.B0100000023be
35 30 0D …
Run Code Online (Sandbox Code Playgroud)

protocols zmodem

11
推荐指数
2
解决办法
9003
查看次数

如何安装Visual Studio 2017的旧版本?

我昨天在工作中提出了一个新的VS2017开发环境,这意味着我得到了最近发布的15.3版本.我在VC++项目中遇到内部编译器错误,组织中没有其他任何人得到错误; 其他人仍然在15.2.为了测试我的理论,15.3更新可能已经破坏了什么,我想安装VS2017 15.2(甚至15.1或15.0).但我无法弄清楚如何做到这一点.当我运行15.0或15.1引导程序时,它仍然尝试安装15.3.

我已经阅读了指南来创建离线安装,但它没有说任何关于获取旧版本的内容.我在这里找到了一个指南,展示了如何使用VS2015的特定版本,但我找不到VS2017的任何内容.

我的工作给了我一个MSDN帐户(Visual Studio Professional),它提供较旧的引导程序下载,但不提供旧版本的完整脱机安装下载.

当Microsoft已部署15.3时,如何安装VS2017 15.2(或15.1或15.0)?

visual-studio visual-studio-2017

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

等待声明与表达

我跟随的await在MSDN教程中,我试图找出两者的区别:await作为声明与使用await作为一种表达.整个异步等待的事情让我大吃一惊,我找不到这个特例的任何例子.

基本上,我想看看如何await异步使用多个s,这意味着我不想在第二个开始之前等待第一个完成.对我来说,这打破了异步的目的:

private async void button1_Click(object sender, EventArgs e)
{
    // Using await as an expression
    string result_a = await WaitAsynchronouslyAsync();
    string result_b = await WaitAsynchronouslyAsync();

    // This takes six seconds to appear
    textBox1.Text = result_a + Environment.NewLine;
    textBox1.Text += result_b;
}

public async Task<string> WaitAsynchronouslyAsync()
{
    await Task.Delay(3000);
    return "Finished";
}
Run Code Online (Sandbox Code Playgroud)

然而,通过微妙的改变,两个"完成"的出现只需要3秒,这就是我想要的 - 两个await真正异步运行:

private async void button1_Click(object sender, EventArgs e)
{
    var a = …
Run Code Online (Sandbox Code Playgroud)

c# async-await

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

自动完成案例问题

When writing C# in Visual Studio (Community 2017), it's always really bugged me that when I have two similarly-named identifiers, one beginning with upper-case and one beginning with lower-case, that sometimes when I start typing in lower-case it'll autocomplete on the upper-case identifier instead.

This typically happens when I'm assigning from a lower-case parameter to an upper-case field/property, for example:

在此输入图像描述

When I start typing my..., it matches the lower-case myValue until I type the v, at which point …

c# intellisense autocomplete visual-studio

5
推荐指数
2
解决办法
1731
查看次数

MIPS中.word和.equ有什么区别?

我认为两者都是一样的:变量声明和初始化.你能详细说明吗?

assembly mips

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

不同设备上相同代码的不同行为

我很困惑.我有一个相同的程序被上传到两个不同的Arduino板.它是用C++编写的.

这是一个更大的计划,但我只是将其减少到有问题的部分.基本上,我有一个"主机"Arduino和一个"漫游"Arduino无线通信.有多个流动站单元,但问题只发生在其中一个上.流动站有需要校准的电机,因此我的Motor命名空间中有静态变量来保存这些校准值.为了防止必须在源代码中更改这些值,每次我想要校准它时重新编译和重新加载,我使用无线系统允许主机在运行时将校准值发送到流动站.

这就是问题所在:在一个流动站上,如果我调用该ChangeSpeed方法,则值不会更新,但如果我直接修改变量,它们会更新.

让我强调它在五个流浪者中有四个可以正常工作.问题恰好发生在一个流动站上.上传到每个流动站的代码是相同的.

以下代码导致问题:

Motor.h:

namespace Motor
{
    static unsigned char left_speed = 0;
    static unsigned char right_speed = 0;

    void ChangeSpeed(unsigned char, unsigned char);
}
Run Code Online (Sandbox Code Playgroud)

Motor.cpp:

void Motor::ChangeSpeed(unsigned char l_speed, unsigned char r_speed)
{
    left_speed = l_speed;
    right_speed = r_speed; 

    soft.println("Change speed: " + String(left_speed) + ", " + String(right_speed));
}
Run Code Online (Sandbox Code Playgroud)

Main.cpp的:

void UpdateSpeedValuesBad(unsigned char l_speed, unsigned char r_speed)
{
    Motor::ChangeSpeed(l_speed, r_speed);
    soft.println("Motor write: " + String(l_speed) + ", " + String(r_speed)); …
Run Code Online (Sandbox Code Playgroud)

c++ arduino

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