小编Kur*_*ran的帖子

如何在c#中使用其产品代码卸载MSI

我知道我们可以通过传递命令参数来使用其MSI卸载Windows应用程序,如下所示,

Process p = new Process(); 
p.StartInfo.FileName = "msiexec.exe"; 
p.StartInfo.Arguments = "/x \"C:\\MyApplication.msi\"/qn"; 
p.Start(); 
Run Code Online (Sandbox Code Playgroud)

但我想知道的是如何在不使用MSI的情况下卸载应用程序?在上面的场景中,我应该在特定位置安装MSI来卸载这个应用程序,如果我可以使用产品代码解压缩,那么我就不需要在目标机器上安装MSI.

c# windows-installer uninstall

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

在fiddler中捕获内部请求调用

我有Web应用程序,并在内部调用WCF和ASMX服务来获取信息.但是,在fildder中,我能够单独看到唯一的web apllication aspx请求,而不是WCF和asmx服务调用.

我如何在Fiddler流量中捕获那些WCF和asmx调用.

如果fiddler没有这个选项,请建议其他一些工具.

c# wcf asmx fiddler

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

使用 C# 窗体应用程序静默安装 SQL Server

我有一个用 C# 开发的 Windows 应用程序,我需要将它安装在一台只安装了操作系统和 .Net Framework 的 PC 上。现在我必须提供一个选项,以使用此 Windows 应用程序在该 PC 上安装 SQL Server 2008 R2 Express 版。我已经为安装/卸载 Windows 服务编写了代码,但对 sql server 安装感到震惊。有人可以帮我做这件事吗?

c# sql sql-server sql-server-2008

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

如何禁用列表框滚动条的标准上下文菜单?

我正在使用 Windows 窗体在 C# 中创建一个应用程序。我正在使用列表框来显示一些数据。由于某种原因,在这里解释太长,我想隐藏列表框上滚动条的标准右键菜单(滚动到此处,向上滚动,向下滚动等)

此标准上下文菜单显示在每个控件的每个滚动条上。

有没有办法完全禁用它或用空的上下文菜单替换它?

.net c# listbox scrollbar winforms

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

有没有办法将winform的高度设置为1044以上?

我试图将表单高度设置为2000,但它在C#winform中将高度大小返回到1044.
有什么方法可以在winform C#中使高度大小超过1044?

c# winforms

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

Base Classes构造函数在没有调用的情况下被命中?

鉴于代码:

public class A
{
    public A()
    {
        throw new Exception();
    }
}

public class B : A
{
    public B(int i)
    {

    }
}
Run Code Online (Sandbox Code Playgroud)

然后运行该行:

  var x = new B(2);
Run Code Online (Sandbox Code Playgroud)

我永远不会指望A构造函数被命中(除非我添加base())到B构造函数声明的结尾.

奇怪的是它似乎受到了打击(抛出异常).这是默认行为吗?这让我感到震惊,因为我完全没想到它A的构造函数被击中了

c# oop

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

如何从linq获取int值

我该如何解决以下问题:

var xvalue = from cust in list 
             where cust.DisplayString == ((Data)x).CustomerName 
             select cust.Number;
int namX = xvalue;
Run Code Online (Sandbox Code Playgroud)

c# linq wpf

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

用于字典的不区分大小写的字符串?

我需要一个字典来获得一个字符串,但忽略大小写.我已经反编译了Dictionary类型,它基本上创建了密钥哈希码的哈希表.我不能将字符串子类化,因为它是一个原始类型,所以我创建了自己的类作为键:

struct StringCaseInsensitiveHash
{
    private readonly string _innerString;
    public StringCaseInsensitiveHash(string str)
    {
        _innerString = str;
    }

    public static implicit operator string(StringCaseInsensitiveHash stringCaseInsensitiveHash)
    {
        return stringCaseInsensitiveHash._innerString;
    }

    public override int GetHashCode()
    {
        return _innerString.ToLower().GetHashCode();
    }
}
Run Code Online (Sandbox Code Playgroud)

有没有更好的方法来做到这一点?

谢谢,

c#

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

使用Process.Start启动WPF应用程序

我试图推出一个WPF应用程序使用Process.Start。当我通过双击来启动该过程时explorer.exe,它会正确启动;但是,当我尝试使用以下代码片段时:

var programPath = @"C:\Users\user\Documents\Program Directory\program.exe";
if(!File.Exists(programPath))
{
     MessageBox.Show("The program.exe file does not exist! Cannot launch.");
     return;
}
Process.Start(programPath);
Run Code Online (Sandbox Code Playgroud)

在立即关闭之前,我的WPF进程在任务管理器中短暂闪烁。

c# wpf process

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

c# String.Split((string)null, , StringSplitOptions.RemoveEmptyEntries) 不按空格分割,它有什么作用?

我有代码(在本例中针对 .NET Core 3.1),我想在空格上分割字符串。我的草稿代码是

string s = "A B";
var parts = s.Split(null, StringSplitOptions.RemoveEmptyEntries);
Run Code Online (Sandbox Code Playgroud)

但编译器抱怨第一个参数是 a(char[])或 a之间存在歧义(string?)。我选择将 null 转换为字符串:

string s = "A B";
var parts = s.Split((string)null, StringSplitOptions.RemoveEmptyEntries);
Run Code Online (Sandbox Code Playgroud)

然而,结果却出人意料地是一个字符串数组"A B"

事实证明,通过对 Split 的所有重载进行重复文档的研究,我们发现这个签名(采用单个字符串分隔符的签名)是唯一一个空分隔符并不意味着空格处中断的签名。

如果我编码(string[])null(char[])nullnew char[0]、 ,或者new string[0]我会得到我期望的结果。我必须承认,不完整的编译器错误未能列出所有不明确的可能性,在某种程度上引导我走上了这条错误的道路。我脑子里有字符串分隔符,所以忽略了(char[])错误消息中的版本并选择了那个(string)版本。

但这留下了一个问题,Split((string)null, ...) 实际上做了什么?文档似乎没有说明任何一种方式,但显然答案是它只是返回单元素数组中的原始字符串。

.net c# whitespace

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