小编Ant*_*n23的帖子

TryParse没有var param

C#6.0中的新功能允许在TryParse方法中声明变量.我有一些代码:

string s = "Hello";

if (int.TryParse(s, out var result))
{

}
Run Code Online (Sandbox Code Playgroud)

但我收到编译错误: 在此输入图像描述

我做错了什么?PS:在项目设置中设置C#6.0和.NET framework 4.6.

c# c#-6.0 c#-7.0

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

无法在Windows 10上构建WIX项目

我的WIX安装程序项目使用Visual Studio 2015在Windows 8.1上成功构建..NET版本为4.5.1.但是当我升级到Windows 10时,我无法构建我的项目.

我不知道问题是因为Windows 10或其他问题.当我构建我的项目时,我收到以下错误:

错误未找到"WixAssignCulture"任务.请检查以下内容:1.)项目文件中任务的名称与任务类的名称相同.2.)任务类是"public"并实现Microsoft.Build.Framework.ITask接口.3.)在项目文件或位于"C:\ Program Files(x86)\ MSBuild\14.0\bin"目录中的*.tasks文件中正确声明了任务.ProSafeInstaller C:\ Program Files(x86)\ MSBuild\Microsoft\WiX\v3.x\wix2010.targets 2340

错误无法从程序集C:\ Program Files(x86)\ MSBuild ..\WiX Toolset v3.8\bin\WixTasks.dll加载"ReadRegistry"任务.无法加载文件或程序集"Microsoft.Build.Utilities,Version = 2.0.0.0,Culture = neutral,PublicKeyToken = b03f5f7f11d50a3a"或其依赖项之一.Неудаетсянайтиуказанныйфайл.确认声明是否正确,程序集及其所有依赖项是否可用,以及该任务是否包含实现Microsoft.Build.Framework.ITask的公共类.CustomActions.

c# wix

17
推荐指数
1
解决办法
6661
查看次数

启用wix安装程序中的日志记录

如何在我的wix项目中启用日志记录并设置MsiLogFileLocation?现在我用命令行参数运行我的install.msi:

msiexec/i install.msi/l*v InstallLog.log

我想记录我的工作总是只运行install.msi没有任何参数.有没有办法做到这一点?

wix

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

Process Explorer使用哪个winapi函数来暂停进程?

我正在尝试编写一个钩子,它将捕获暂停进程的Process Explorer的 " SomeFunction " .我已经有了一个挂钩SuspendThreadNtSuspendThread等函数的解决方案.但是Process Explorer使用了不同的东西,我不知道是什么.请问有人可以告诉我PE暂停进程所使用的函数名称吗?

c++ winapi systems-programming

5
推荐指数
1
解决办法
282
查看次数

WIX如何从自定义操作访问源文件

我有一个 WIX 安装应用程序和许多源文件:

...
<Directory Id="dirF21F1AE09DCD1D651EFCA4E6AD334FAC" Name="myservice">
<Component Id="cmp503CB14E95C2C333DCE9E73FC1BB2E9A" Guid="{29FDDCA4-E70D-41AA-B1C8-06AD9A07810D}">
    <File Id="fil2FE62A0172300DF74F1725E28B7FA003" KeyPath="yes" Source="$(var.SourcePath)\myservice\common_base.dll" />
</Component>
</Directory>
...
Run Code Online (Sandbox Code Playgroud)

这个文件是由引用复制的:

<ComponentGroupRef Id="InstallSources"/>
Run Code Online (Sandbox Code Playgroud)

在复制文件之前,我需要在自定义操作中访问 c​​ommon_base.dll 。我想将其复制到临时文件夹进行一些操作:

private static void CopyCommonDll(Session session)
{
    try
    {
        var dllPath = session["get path here"]; // or can I get dllPath the other way?

        session.InfoLog("Dll path: {0}", dllPath);

        var destPath = Path.Combine(Path.GetTempPath(), Path.GetFileName(dllPath));

        session.InfoLog("destPath dll path: {0}", dllPath);

        File.Copy(dllPath, destPath);

        session.InfoLog("file copied!");

        // some code here

        File.Delete(destPath);
    }
    catch (Exception e)
    {
        session.ErrorLog(e);
    }
}
Run Code Online (Sandbox Code Playgroud)

我怎样才能做到这一点?

c# wix

5
推荐指数
1
解决办法
1979
查看次数

google chrome 中的 window.onerror 中的错误参数为空

我有导致 js 错误的 html 页面和一个全局处理程序。

<!DOCTYPE html>
<html>
<head>
    <title></title>
    <meta charset="utf-8">
    <script type="text/javascript" src="js/jquery-3.1.0.min.js"></script>
    <script type="text/javascript">
        $(function () {
            window.onerror = function (errorMsg, url, lineNumber) {
                alert('Error: ' + errorMsg + ' Script: ' + url + ' Line: ' + lineNumber);
            }

            throw new Error("this is error");
        });
    </script>
</head>
<body>
    <div>Test page</div>
</body>
</html>
Run Code Online (Sandbox Code Playgroud)

我收到警报:“错误:脚本错误。脚本:行:0”。如您所见,缺少错误信息。我如何在此处获取此信息,就像我可以在开发人员工具中看到错误一样。任何 chrome 扩展都不适合。我必须在 javascript 中使用他们的信息来捕获错误。

javascript google-chrome

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

Netstat无法正常工作

“ netstat -a”在命令提示符下不起作用。我收到一个错误:

netstat无法识别为内部或外部命令

但是,当我netstat - a故意写错误(“ a”之前有多余的空格)时,会从此命令收到帮助信息。这是一个奇怪的行为。我尝试从其文件夹(C:\Windows\System32)运行此命令,但结果相同。如何运行此命令?

PS:我的Windows用户是管理员。

windows command-prompt

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

.net 应用程序在 1 MB 的进程资源管理器中开始挂起时被阻止

我有一个用 C# 编写的 Windows 窗体应用程序,它针对 .net 框架 4.8。我在客户 PC 上的 Windows 7 x86 上运行此应用程序。我的应用程序运行良好,但有时我在启动时遇到一个神秘的问题。有时我的应用程序只是拒绝启动,但是当我打开进程资源管理器时,我会看到 MyAplication.exe,其中包含 1MB 的 RAM。似乎有什么东西阻止了我的应用程序。我检查了 Windows 事件日志,但没有错误。我还尝试写入 Program.cs 第一行的日志文件,但它根本没有发生。我杀死了这个 1 MB 的进程并重新启动我的应用程序。它打开并工作得很好,或者我必须重新启动它几次。我的另一个 WPF 应用程序,甚至来自外部供应商的 .n​​et 应用程序都遇到过这种 1 MB RAM 问题。我使用进程资源管理器为我的应用程序创建了一个转储文件。在我的 Windows 10 个人 PC 上,我使用了 Windows 应用商店中的 WinDbg 应用程序来分析我的应用程序的转储文件。我看到以下内容:

FAULTING_THREAD:  000002a0
PROCESS_NAME:  MyApplication.exe
ERROR_CODE: (NTSTATUS) 0x80000003 - {EXCEPTION}  Breakpoint  A breakpoint has been reached.
EXCEPTION_CODE_STR:  80000003
MISSING_CLR_SYMBOL: 0

STACK_TEXT:  
002be670 77176c04 ntdll!KiFastSystemCallRet+0x0
002be674 771765ac ntdll!NtWaitForSingleObject+0xc
002be678 77161db1 ntdll!RtlpWaitOnCriticalSection+0x13e
002be6dc 77161c95 ntdll!RtlEnterCriticalSection+0x150
002be704 76e5cc0f rpcrt4!PerformRpcInitialization+0x29
002be748 76e665fd rpcrt4!RpcStringBindingComposeW+0x15 …
Run Code Online (Sandbox Code Playgroud)

.net c# dump

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

返回参考值时的不明确行为

我有一段代码:

using System;

public class Program
{
    private static int Incr(ref int i)
    {
        return i++;
    }
    public static void Main()
    {
        var i = 0;
        i += Incr(ref i);
        Console.WriteLine(i);
    }
}
Run Code Online (Sandbox Code Playgroud)

Console.WriteLine(i)会给我们"0".但是在没有"+ ="的情况下调用Incr(ref i)

var i = 0;
Incr(ref i);
Console.WriteLine(i);
Run Code Online (Sandbox Code Playgroud)

会给我们"1".这怎么可能?

c#

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