小编hul*_*ist的帖子

相当于dotnet core/csproj中的AssemblyInfo

由于dotnet核心移回到.csproj格式,因此有一个新的自动生成MyProject.AssemblyInfo.cs,其中包含.

[assembly: AssemblyCompany("MyProject")]
[assembly: AssemblyVersion("1.0.0.0")]
Run Code Online (Sandbox Code Playgroud)

请注意,每次构建时都会自动重新生成.以前该文件位于/ obj /目录中,现在它似乎只在内存中,因为在磁盘上找不到该文件并且单击错误消息不会打开任何文件.

这是错误消息: 在此输入图像描述

由于它们在那里定义,我无法在经典中定义它们AssemblyInfo.cs.

我在哪里/如何定义项目的公司和版本?

assemblyinfo visual-studio .net-core visual-studio-2017

199
推荐指数
6
解决办法
7万
查看次数

检查项目后会触发哪个CheckedListBox事件?

我有一个CheckedListBox,我想一个项目被检查我想要一个事件,以便我可以使用具有新状态的CheckedItems.

由于在CheckedItems更新之前触发了ItemChecked,因此它不会开箱即用.

更新CheckedItems时,我可以使用哪种方法或事件来通知?

c# checkedlistbox winforms

83
推荐指数
6
解决办法
8万
查看次数

在c#中转义命令行参数

精简版:

它是足够用引号括参数和逃生\"

代码版本

我想string[] args使用ProcessInfo.Arguments 将命令行参数传递给另一个进程.

ProcessStartInfo info = new ProcessStartInfo();
info.FileName = Application.ExecutablePath;
info.UseShellExecute = true;
info.Verb = "runas"; // Provides Run as Administrator
info.Arguments = EscapeCommandLineArguments(args);
Process.Start(info);
Run Code Online (Sandbox Code Playgroud)

问题是我将参数作为数组获取,并且必须将它们合并为单个字符串.可以设计一个参数来欺骗我的程序.

my.exe "C:\Documents and Settings\MyPath \" --kill-all-humans \" except fry"
Run Code Online (Sandbox Code Playgroud)

根据这个答案,我创建了以下函数来逃避单个参数,但我可能错过了一些东西.

private static string EscapeCommandLineArguments(string[] args)
{
    string arguments = "";
    foreach (string arg in args)
    {
        arguments += " \"" +
            arg.Replace ("\\", "\\\\").Replace("\"", "\\\"") +
            "\"";
    }
    return arguments;
}
Run Code Online (Sandbox Code Playgroud)

这是否足够好或者是否有任何框架功能?

.net c# command-line-arguments

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

在几个项目之间共享c#类源代码

我编写了一个类来处理我的应用程序中的内部日志记录.现在我想在另一个新的,完全独立的项目中使用这个类.

我可以简单地将文件复制到新的项目文件夹,但我希望只保留一个副本,以便其中的所有更改将适用于两个项目.

我可以使用"添加现有文件",但是我在哪里放置文件以便下一个开发人员知道它是必需的.我曾经有一个"共享"文件夹,但有一次该文件夹没有进入下一个开发计算机.

组织这个的最佳方法是什么,以便它对新的维护者最有意义,并最大限度地降低项目中断链接的风险.

c# visual-studio code-sharing

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

以非阻塞方式调用TaskCompletionSource.SetResult

我发现TaskCompletionSource.SetResult();在返回之前调用等待任务的代码.在我的情况下,导致死锁.

这是一个在普通版本中启动的简化版本 Thread

void ReceiverRun()
    while (true)
    {
        var msg = ReadNextMessage();
        TaskCompletionSource<Response> task = requests[msg.RequestID];

        if(msg.Error == null)
            task.SetResult(msg);
        else
            task.SetException(new Exception(msg.Error));
    }
}
Run Code Online (Sandbox Code Playgroud)

代码的"异步"部分看起来像这样.

await SendAwaitResponse("first message");
SendAwaitResponse("second message").Wait();
Run Code Online (Sandbox Code Playgroud)

Wait实际上嵌套在非异步调用中.

SendAwaitResponse(简化)

public static Task<Response> SendAwaitResponse(string msg)
{
    var t = new TaskCompletionSource<Response>();
    requests.Add(GetID(msg), t);
    stream.Write(msg);
    return t.Task;
}
Run Code Online (Sandbox Code Playgroud)

我的假设是第二个SendAwaitResponse将在ThreadPool线程中执行,但它会在为ReceiverRun创建的线程中继续.

无论如何设置任务的结果而不继续等待代码?

应用程序是一个控制台应用程序.

c# multithreading asynchronous task-parallel-library async-await

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

中止对非托管DLL的调用

我有一个非托管DLL,如果输入参数是一个很大的值,它可以运行很长时间,有时这是可取的但不总是.

我如何在c#中调用此函数以便在需要时可以中止它?

到目前为止,我已经尝试将调用放在一个单独的线程中,但是中断和中止似乎都没有停止进程,该进程在100%CPU运行直到dll完成.

是否可以终止正在运行的DLL代码?

c# dll multithreading unmanaged abort

13
推荐指数
2
解决办法
4114
查看次数

如何在运行时更改语言而不会出现布局问题

我有一个winforms应用程序,用户必须能够在运行时更改语言.

为了概括开关并避免硬编码控制名称,我尝试了以下扩展:

    internal static void SetLanguage(this Form form, CultureInfo lang)
    {
        ComponentResourceManager resources = new ComponentResourceManager(form.GetType());

        ApplyResourceToControl(resources, form, lang);
        resources.ApplyResources(form, "$this", lang);
    }

    private static void ApplyResourceToControl(ComponentResourceManager resources, Control control, CultureInfo lang)
    {
        foreach (Control c in control.Controls)
        {
            ApplyResourceToControl(resources, c, lang);
            resources.ApplyResources(c, c.Name, lang);
        }
    }
Run Code Online (Sandbox Code Playgroud)

这确实改变了所有字符串.

然而,这样做的副作用是,无论当前大小如何,窗口的整个内容都会调整为该窗口的原始启动大小.

如何防止布局更改或启动新的布局计算?

c# localization runtime winforms

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

使用chrome.tabs与browser.tabs进行浏览器兼容

我正在将Chrome扩展程序移植到Firefox.

根据MDN,有一个browser.tabs API应该由ch​​rome支持.

但是browserChrome不是稳定的对象.同时chrome.tabs在Firefox中工作得很好.

它是安全的替代browserchrome阅读MDN文档时?写文档的原因是什么browser?是否有计划的变化?

javascript google-chrome-extension firefox-addon-webextensions

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

@onchange 之后重置 &lt;input&gt; 文本

我正在构建一个 blazor 组件,如果输入的文本无效,它将恢复为原始输入。由于ValueText不改变渲染过程,因此不会更新它/替换用户输入。

<input type="text"
       value="@ValueText"
       @onchange="TextChanged" />
Run Code Online (Sandbox Code Playgroud)

调用StateHasChanged()不会改变结果。

就我而言ValueText总是空的。解决方法是在null和之间交替"",这将导致输入重置。

有没有一种方法可以将元素属性标记为“脏”,以便即使虚拟 DOM 未更改,blazor 渲染也会刷新 DOM?

blazor

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

从库项目中包含wwwroot?

我正在开发一个项目结构,其中有多个项目服务于同一组静态文件.

在开始时,每个项目都将服务于静态文件和API服务,但稍后我计划将其中一些项目分成多个项目.

  • ProjectA将同时为静态文件和API提供服务
  • ProjectB1将仅提供与ProjectA中相同的静态文件
  • ProjectB2将仅提供API

在经典的VS库中,您可以将文件标记为内容.这些将包含在引用该库的任何项目的构建输出中.

我尝试创建一个包含静态文件的项目ProjectStatic,并从ProjectA和ProjectB1引用它,但ProjectStatic中的所有文件都不包含在ProjectA和ProjectB1的输出中.

可以使用project.json完成吗?

asp.net-core

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