今天我在项目中突然遇到问题,单击Go To Definition会给我一个奇怪的错误:"无法导航到插入符号下的符号."
我首先注意到通过NuGet 安装Costura.Fody后的一段时间.我已经卸载了它,但问题仍然存在.我多次清理并重建了解决方案.在我的git提交历史中,在此开始发生的时间点之前或之后,没有任何"Fody"或"Costura"的实例,所以我认为我的.gitignore文件中的一个卡在一个坏的州.
如果目标定义在另一个文件中,则只会出现此问题; 转到当前打开的文件中的内容定义工作正常.Peek Definition也可以正常工作.其他解决方案/项目也可以正常工作 - 只有这一点才会导致问题.
我正在使用Visual Studio 2015. 2013版本似乎没有出现此问题.
为什么会出现此错误,如何解决?
我需要在我的程序中包含基本的文件发送和文件接收例程,它需要通过ZMODEM协议.问题是我无法理解规范.
作为参考,这是规范.
规范没有定义各种常量,所以这里是来自Google的头文件.
在我看来,在该文档中有许多重要的事情未定义:
我环顾四周寻找参考代码,但我能找到的是从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)
这有三个问题:
在此之后,客户端需要发送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) 我昨天在工作中提出了一个新的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)?
我跟随的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) 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 …
我很困惑.我有一个相同的程序被上传到两个不同的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# ×3
arduino ×1
assembly ×1
async-await ×1
autocomplete ×1
c++ ×1
intellisense ×1
mips ×1
protocols ×1
zmodem ×1