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.
我的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.
如何在我的wix项目中启用日志记录并设置MsiLogFileLocation?现在我用命令行参数运行我的install.msi:
msiexec/i install.msi/l*v InstallLog.log
我想记录我的工作总是只运行install.msi没有任何参数.有没有办法做到这一点?
我正在尝试编写一个钩子,它将捕获暂停进程的Process Explorer的 " SomeFunction " .我已经有了一个挂钩SuspendThread和NtSuspendThread等函数的解决方案.但是Process Explorer使用了不同的东西,我不知道是什么.请问有人可以告诉我PE暂停进程所使用的函数的名称吗?
我有一个 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)
在复制文件之前,我需要在自定义操作中访问 common_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)
我怎样才能做到这一点?
我有导致 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 中使用他们的信息来捕获错误。
“ netstat -a”在命令提示符下不起作用。我收到一个错误:
netstat无法识别为内部或外部命令
但是,当我netstat - a故意写错误(“ a”之前有多余的空格)时,会从此命令收到帮助信息。这是一个奇怪的行为。我尝试从其文件夹(C:\Windows\System32)运行此命令,但结果相同。如何运行此命令?
PS:我的Windows用户是管理员。
我有一个用 C# 编写的 Windows 窗体应用程序,它针对 .net 框架 4.8。我在客户 PC 上的 Windows 7 x86 上运行此应用程序。我的应用程序运行良好,但有时我在启动时遇到一个神秘的问题。有时我的应用程序只是拒绝启动,但是当我打开进程资源管理器时,我会看到 MyAplication.exe,其中包含 1MB 的 RAM。似乎有什么东西阻止了我的应用程序。我检查了 Windows 事件日志,但没有错误。我还尝试写入 Program.cs 第一行的日志文件,但它根本没有发生。我杀死了这个 1 MB 的进程并重新启动我的应用程序。它打开并工作得很好,或者我必须重新启动它几次。我的另一个 WPF 应用程序,甚至来自外部供应商的 .net 应用程序都遇到过这种 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) 我有一段代码:
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".这怎么可能?