看看下面的命令:为什么a之后的值不可用&?
C:\>set a=
C:\>set a=3&echo %a%
%a%
C:\>echo %a%
3
C:\>set a=3&echo %a%
3
Run Code Online (Sandbox Code Playgroud)
但是,当我这样做
C:\>set a=
C:\>set a=3&set
Run Code Online (Sandbox Code Playgroud)
a = 3包含在列出的变量中!
我需要这个我在这里学到的技巧,获取命令的退出代码甚至输出管道: Windows命令解释器:如何获取第一个管道命令的退出代码, 但我必须在make脚本中使用它,这就是为什么一切必须在一行!这就是我想要做的:
target:
($(command) & call echo %%^^errorlevel%% ^>$(exitcodefile)) 2>&1 | tee $(logfile) & set /p errorlevel_make=<$(exitcodefile) & exit /B %errorlevel_make%
Run Code Online (Sandbox Code Playgroud)
但是errorlevel_make总是为空(带有退出代码的文件存在且包含正确的退出代码).
这是cmd中的错误吗?任何想法我能做什么?
我从VS2017和NuGet依赖项的新PackageReference开始遇到问题。
起初,我为不再需要此多余的packages.config文件而感到兴奋。但是现在我有点失望:
我的某些程序集以Framework 4.0为目标,因为它们也必须能够在XP下运行。其他人没有此限制,并且目标框架为4.6.1。因为没有任何4.0程序集依赖于4.6.1程序集,所以它可以正常工作。只有另一个方向。
大多数程序集使用NLog NuGet包。但是,当使用新的PackageReference选项指定NuGet软件包时,面向框架4.6.1的程序集将始终安装面向.NET 4.5的NLog变体。从那时起,无法再构建依赖于.NET 4.0程序集的其他程序集:
C:\ Program Files(x86)\ Microsoft Visual Studio \ 2017 \ Professional \ MSBuild \ 15.0 \ Bin \ Microsoft.Common.CurrentVersion.targets(1987,5):警告MSB3275:主要参考资料为“ Tools,Version = 2.0.0.9180 ,无法解析Culture = neutral,processorArchitecture = MSIL,因为它间接依赖于针对“ .NETFramework,Version = v4.5”框架。这是当前目标框架“ .NETFramework,Version = v4.0”的更高版本。[D:\ Work \ 4.8.0_PackageReference \ Test \ TestApp.csproj]
我想将NLog for .NET 4.0用于所有项目。如果没有packages.config,这真的不可能吗?可以使用targetFramework属性指定所需的框架。但是我找不到新的PackageReference方法来做到这一点。真是难以置信...
我重新激活了几个月前我确信可以使用的代码。它让我发疯,但现在不再了。我在其他问题中找不到答案。
在服务器端,我使用创建一个管道
#define MAX_MESSAGE_LENGTH 1024
SECURITY_ATTRIBUTES sa;
SECURITY_DESCRIPTOR sd;
InitializeSecurityDescriptor(&sd, SECURITY_DESCRIPTOR_REVISION);
SetSecurityDescriptorDacl(&sd, TRUE, static_cast<PACL>(0), FALSE);
sa.nLength = sizeof(sa);
sa.lpSecurityDescriptor = &sd;
sa.bInheritHandle = FALSE;
auto pipe_name = _T("\\\\.\\pipe\\") + _serviceName;
HANDLE pipe = CreateNamedPipe(
pipe_name.c_str(),
PIPE_ACCESS_DUPLEX | FILE_FLAG_FIRST_PIPE_INSTANCE,
PIPE_TYPE_MESSAGE | PIPE_READMODE_MESSAGE | PIPE_WAIT,
1,
MAX_MESSAGE_LENGTH, MAX_MESSAGE_LENGTH, // buffer lengths (advisory)
0, // default timeout of 50ms when WaitNamedPipe uses NMPWAIT_USE_DEFAULT_WAIT
&sa));
Run Code Online (Sandbox Code Playgroud)
然后一个线程等待传入的客户端ConnectNamedPipe。ConnectNamedPipe阻塞直到客户端连接
HANDLE pipe = CreateFile(
pipe_name.c_str(), // pipe name
GENERIC_READ | // read and write …Run Code Online (Sandbox Code Playgroud) windows ×2
.net ×1
batch-file ×1
c++ ×1
cmd ×1
makefile ×1
named-pipes ×1
nuget ×1
server ×1
winapi ×1