从代码我想强制Windows机器使用特定的网络适配器进行到特定IP地址的所有连接.
我计划通过使用ROUTE ADD命令行工具来实现,但这要求我事先知道网络适配器的索引号(因为它必须提供给ROUTE ADD命令).
问题:如果我知道它的名字,我如何以编程方式检索网络适配器的索引?
我知道ROUTE PRINT向我显示了我需要的信息(所有网络适配器的索引号),但是必须有一种方法来以编程方式获取该信息(C#)?
请注意,我不喜欢解析ROUTE PRINT的文本输出,因为文本格式可能会随着不同的Windows版本而改变.
我有一个D-Link DWM-156 3G USB调制解调器,我想从我的应用程序(在Windows XP SP3上运行的C#.NET 4.0)发送AT命令.
在插件和安装驱动程序后,调制解调器显示如下:
在设备管理器中,添加了两个串行端口:
在控制面板,电话和调制解调器选项中,添加了一个新的调制解调器:
问题:我应该使用哪个COM端口发送AT命令,以及以哪种速度发送?
我已经尝试了不同速度的所有三个端口,但没有任何运气.
为了便于学习,我随后安装了"Free Serial Port Monitor"嗅探器应用程序,希望能够在打开和关闭互联网连接(可正常工作)时监控与D-Link的通信性.
一开始,嗅探器应用程序会询问我要监视哪个端口,并提供以下端口名称供您选择:
选择"D-Link ..."名称可以正常工作,现在我可以看到所有正在使用的AT命令,但我无法确定端口的使用波特率.此外,COM4,COM5或COM19都不能以这种方式进行嗅探(这些端口似乎没有发生任何事情).
现在我想在.NET中使用SerialPort类打开"D-Link ..."端口并与USB调制解调器通信,但SerialPort类要求端口名称以"COM"开头,否则异常是抛出.但是普通的COM端口都不起作用.我仍然不知道使用哪种波特率.我非常困惑并被锁在这里 - 我能做些什么才能到达底部?
我尝试从 .NET 4.7.2 类库 (VS2017) 制作 NuGet 包,但结果 NuGet 包令人惊讶地显示没有依赖项(这是一个错误)。
我的设置是这样的:
该nuget.exe包命令应自动填写所需的依赖-这也曾经是较早(在其他项目中)的情况。但是,当时我在我的类库中使用了packages.config而不是packageReferences。这有什么改变吗?
到底是怎么回事?
如何强制系统再次在我的包中包含所需的依赖项?
笔记:
该包由我们 TeamCity 构建服务器(不带 VS2017)上的 MSBuild 脚本构建。构建脚本同时调用“nuget.exe restore”和后来的 “nuget.exe pack”作为其构建逻辑的一部分。
MSBuild 是 15.7 版
nuget.exe 是版本 4.6.2
如果您通过VS2017这个小控制台程序,单步,你最终会执行两将的WriteLine(...)声明及对掷(...)声明.
这应该是绝对不可能的,那怎么可能呢?
using System;
using System.Threading.Tasks;
namespace ConsoleApp7
{
class Program
{
static void Main(string[] args)
{
Task.Run(() => ProcAsync()).Wait();
}
private static async Task ProcAsync()
{
int aNumber = 7;
switch (aNumber)
{
case 7:
Console.WriteLine("The value is 7"); //You first arrive here...
break;
default:
throw new Exception("Oups..?!"); //but then also here!!!??
}
}
}
}
Run Code Online (Sandbox Code Playgroud) 考虑以下情况:
一切运作良好(如预期).
现在我需要将"Other.dll"中包含的类型的命名空间从"Old.Namespace"更改为"New.Namespace":
现在出现了问题:
当我重建整个解决方案后,编译器停止并报告表单的.resx文件无效:
"无效的Resx文件.无法加载.RESX文件中使用的类型Old.Namespace.OtherType,Other,Version 1.0.0.0,Culture = neutral,PublicKeyToken = null.确保已将必要的引用添加到项目中. 1521号线,5号线"
显然,.resx文件仍然从某处引用具有旧命名空间的类型.那个"某处"似乎来自.resx文件的二进制部分!
问题: 如何让.resx了解它现在必须引用新类型(使用更改的命名空间)?
请帮忙,我真的不知道如何继续这里...
我目前正在编写一个新的 NuGet 包,但无法正确获取app.config.install.xdt文件(这是转换 app.config 以适应已安装包的 xml 文件)。
\n\n问题是在 app.config 中插入<configSections>部分作为第一个子项 -但仅限于它丢失的情况!
\n\n它必须是第一个子项,否则应用程序将因异常而失败(Microsoft 强制执行)。
\n\n如果我只使用常规\xe2\x80\x9cInsertIfMissing\xe2\x80\x9d转换,则插入发生在任何现有子项之后,因此这似乎是不行的。
\n\n我可以做什么来解决我的问题?
\nc# ×4
nuget ×2
windows ×2
.net ×1
.net-4.7.2 ×1
app-config ×1
modem ×1
namespaces ×1
networking ×1
resx ×1
routing ×1
serial-port ×1
usb ×1
winforms ×1
xdt ×1