小编Mar*_*sen的帖子

如何获得网络适配器索引?

从代码我想强制Windows机器使用特定的网络适配器进行到特定IP地址的所有连接.

我计划通过使用ROUTE ADD命令行工具来实现,但这要求我事先知道网络适配器的索引号(因为它必须提供给ROUTE ADD命令).

问题:如果我知道它的名字,我如何以编程方式检索网络适配器的索引?

我知道ROUTE PRINT向我显示了我需要的信息(所有网络适配器的索引号),但是必须有一种方法来以编程方式获取该信息(C#)?

请注意,我不喜欢解析ROUTE PRINT的文本输出,因为文本格式可能会随着不同的Windows版本而改变.

c# windows networking routing

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

如何与USB 3G调制解调器通信?

我有一个D-Link DWM-156 3G USB调制解调器,我想从我的应用程序(在Windows XP SP3上运行的C#.NET 4.0)发送AT命令.

在插件和安装驱动程序后,调制解调器显示如下:

设备管理器中,添加了两个串行端口:

  • D-Link HSPADataCard诊断接口(COM4)
  • D-Link HSPADataCard NMEA设备(COM5)

控制面板,电话和调制解调器选项中,添加了一个新的调制解调器:

  • D-Link HSPADataCard专有USB调制解调器(连接到COM19)

问题:我应该使用哪个COM端口发送AT命令,以及以哪种速度发送?


我已经尝试了不同速度的所有三个端口,但没有任何运气.

为了便于学习,我随后安装了"Free Serial Port Monitor"嗅探器应用程序,希望能够在打开和关闭互联网连接(可正常工作)时监控与D-Link的通信性.

一开始,嗅探器应用程序会询问我要监视哪个端口,并提供以下端口名称供您选择:

  • "杰尔系统HDA调制解调器",
  • "D-Link HSPADataCard专有USB调制解调器",
  • "COM3"
  • "COM4"
  • "COM5"
  • ......以及其他几个,包括"COM19".

选择"D-Link ..."名称可以正常工作,现在我可以看到所有正在使用的AT命令,但我无法确定端口的使用波特率.此外,COM4,COM5或COM19都不能以这种方式进行嗅探(这些端口似乎没有发生任何事情).

现在我想在.NET中使用SerialPort类打开"D-Link ..."端口并与USB调制解调器通信,但SerialPort类要求端口名称以"COM"开头,否则异常是抛出.但是普通的COM端口都不起作用.我仍然不知道使用哪种波特率.我非常困惑并被锁在这里 - 我能做些什么才能到达底部?

c# windows usb modem serial-port

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

NuGet 包显示没有依赖项?

我尝试从 .NET 4.7.2 类库 (VS2017) 制作 NuGet 包,但结果 NuGet 包令人惊讶地显示没有依赖项(这是一个错误)。

我的设置是这样的:

  • 我的类库是 .NET Framework 4.7.2
  • 我的类库使用另一个NuGet 包(具有依赖项)。
  • 我的类库在 .csproj 中使用packageReferences
  • 我的类库包含一个正确的 .nuspec 文件
  • 我使用nuget.exe 包来创建包

nuget.exe包命令应自动填写所需的依赖-这也曾经是较早(在其他项目中)的情况。但是,当时我在我的类库中使用了packages.config而不是packageReferences。这有什么改变吗?

到底是怎么回事?

如何强制系统再次在我的包中包含所需的依赖项?

笔记:

  • 该包由我们 TeamCity 构建服务器(不带 VS2017)上的 MSBuild 脚本构建。构建脚本同时调用“nuget.exe restore”和后来的 “nuget.exe pack”作为其构建逻辑的一部分。

  • MSBuild 是 15.7 版

  • nuget.exe 是版本 4.6.2

.net nuget visual-studio-2017 packagereference .net-4.7.2

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

单挑这个程序很奇怪 - 编译错误?

如果您通过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)

c# visual-studio visual-studio-debugging visual-studio-2017

5
推荐指数
0
解决办法
51
查看次数

重命名命名空间后无效的.resx文件

考虑以下情况:

  • 在我的Windows窗体应用程序中,我有一个表单.
  • 该表单有一个.resx文件.
  • 该表单使用来自另一个程序集("Other.dll")的类("OtherClass").
  • "Other.dll"与主应用程序在同一个VisualStudio 2010解决方案中构建(在同一解决方案中只是一个单独的项目).
  • 在主项目(Windows窗体应用程序)中,我已正确添加对"Other.dll"项目的引用.

一切运作良好(如预期).

现在我需要将"Other.dll"中包含的类型的命名空间从"Old.Namespace"更改为"New.Namespace":

  1. 在VS2010中,我打开了"Other.dll"项目的"属性"窗口
  2. 我将"默认命名空间"文本框中的命名空间从"Old.Namespace"更改为"New.Namespace"
  3. 我相应地更改相关的.cs文件中的命名空间
  4. 我重建修改后的"Other.dll"项目.没有错误.修改后的"Other.dll"生成正常.

现在出现了问题:

当我重建整个解决方案后,编译器停止并报告表单的.resx文件无效:


"无效的Resx文件.无法加载.RESX文件中使用的类型Old.Namespace.OtherType,Other,Version 1.0.0.0,Culture = neutral,PublicKeyToken = null.确保已将必要的引用添加到项目中. 1521号线,5号线"


显然,.resx文件仍然从某处引用具有命名空间的类型.那个"某处"似乎来自.resx文件的二进制部分!

问题: 如何让.resx了解它现在必须引用新类型(使用更改的命名空间)?

请帮忙,我真的不知道如何继续这里...

c# resx namespaces visual-studio-2010 winforms

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

如何在 app.config 中插入 <configSections> 作为第一个子项

我目前正在编写一个新的 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

我可以做什么来解决我的问题?

\n

app-config nuget xdt-transform xdt visual-studio-2017

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