我需要测试是否设置了变量.我已经尝试了几种技术,但他们忽视了,只要%1用双引号包围时,如情况%1是"c:\some path with spaces".
IF NOT %1 GOTO MyLabel // This is invalid syntax
IF "%1" == "" GOTO MyLabel // Works unless %1 has double quotes which fatally kills bat execution
IF %1 == GOTO MyLabel // Gives an unexpected GOTO error.
Run Code Online (Sandbox Code Playgroud)
根据此站点,这些是受支持的IF语法类型.所以,我没有办法做到这一点.
IF [NOT] ERRORLEVEL number command
IF [NOT] string1==string2 command
IF [NOT] EXIST filename command
Run Code Online (Sandbox Code Playgroud) 据我了解,你应该使用这个Environment.GetFolderPath方法,所以你有独立于操作系统的代码......
Windows XP使用C:\Documents and Settings\.Windows Vista使用C:\ProgramData和C:\Users.
我在Windows Vista计算机上使用下面的代码,它正在返回一个C:\Documents and Settings\目录而不是C:\ProgramData它应该...任何想法?
string commonAppData = Environment.GetFolderPath(Environment.SpecialFolder.CommonApplicationData);
try
{
File.CreateText(
Environment.GetFolderPath(Environment.SpecialFolder.CommonApplicationData) +
"\\mycompany\\uid");
log.Debug("Created file successfully");
}
catch (Exception ex)
{
log.Error("Unable to create the uid file: ", ex);
}
Run Code Online (Sandbox Code Playgroud) 我经常看到问题的答案如下:"我应该如何在我的.NET应用程序中存储设置?" 是通过手动将条目添加到app.config(或web.config)来编辑app.config文件,如下所示:
<configuration>
<appSettings>
**<add key="ConfigValueName" value="ABC"/>**
</appSettings>
</configuration>
Run Code Online (Sandbox Code Playgroud)
然后,访问它们像:
string configValue = Configuration.AppSettings["ConfigValueName"];
Run Code Online (Sandbox Code Playgroud)
我将上面概述的方法称为"app.config"方法.我很少看到人们建议在项目中添加"设置"文件.我已经在网络上和堆栈溢出中看到了这么多次...我开始怀疑我是否遗漏了某些东西......因为我不确定为什么你使用这种方法而不是使用"设置" "档案.我没有进入.NET直到VS2005所以我有一个理论是这是VS2003中的事情是如何完成的,人们从未切换过?
推荐app.config方法的人的示例:
从我的观点来看,"设置文件"方法有以下优点:
propertyGrid1.SelectedObject = Settings1.Default;就是你已经完成了.如果您不确定"设置"文件方法的含义,请参阅此帖子,这是有人建议使用设置文件而不是app.confg的少数示例之一.
编辑:请理解:本主题的目的是弄清楚为什么人们会使用上面概述的app.config方法而不是设置文件方法.我遇到了设置文件方法的限制,并且有时被迫推出自己的自定义解决方案.这是一个完全不同的讨论.
我知道如何设置堆栈大小,这要归功于: 如何在Node.js中增加最大调用堆栈大小
但是,默认大小是多少?(即如何获得PHP等价物phpinfo())
我试图从计算机中获取唯一的标识符,并希望每次都可以可靠地返回相同的MAC地址.相信我,我有使用MAC地址的原因,并阅读了许多关于备用唯一ID方法的帖子(是的,如果他们没有任何网卡,我会考虑).
问题出在.NET中我无论如何都不知道特定的NetworkInterface是否是一个物理硬件网卡,例如"Nortel IPSECSHM Adapter - Packet Scheduler Miniport",它会在您连接到某些VPN或WiFi网络时添加.
我知道如何通过使用类似于此的代码获取Mac地址:
foreach (NetworkInterface nic in NetworkInterface.GetAllNetworkInterfaces())
{
log.Debug("NIC " + nic.OperationalStatus + " " + nic.NetworkInterfaceType + " " + nic.Speed + " " + nic.GetPhysicalAddress() + " " + nic.Description);
}
Run Code Online (Sandbox Code Playgroud)
可以理解的是,没有100%的方法可以确保我获得内部网卡,但我想选择MAC地址来返回最不可能改变的给定机器.独立于诸如以下因素 - 无论是否连接到wifi ......通过某种类型的系绳连接进行连接......或者他们安装了一些新的vpn软件,增加了新的界面.
1)选择第一个"Up"界面.这在我的笔记本电脑上失败了,因为"Packet Miniport"总是在运行.此外,如果我将手机连接到笔记本电脑,这也会显示为第一张卡.
2)选择最合适的类型......这个失败b/c基本上所有东西都显示为"以太网",包括WiFi适配器和我的iPHone网络连接.
3)选择具有IP地址的NIC.由于以下几个原因导致失败:1)网卡可能未连接到LAN 2)有多个可能具有IP地址的网卡.
4)只需发送所有MAC地址......问题是列表会根据安装的软件而改变,并且很难进行比较.
5)以最快的速度选择mac地址.我想这可能是我最好的选择.我认为可以说最快的界面通常是最永久的.
或者,可能还有其他方法可以检测.NET中的物理卡,或者如果您可以推荐一个提供不同信息的API调用,我会考虑调用其他API调用.
还有其他想法吗?
这里演示的是当我的iphone被束缚时上面的示例代码的输出:
DEBUG - NIC Down Ethernet 500000 0021E98BFBEF Apple Mobile Device Ethernet - Packet Scheduler Miniport
DEBUG - NIC Up Ethernet 10000000 …Run Code Online (Sandbox Code Playgroud) 我的软件最近部署到一位客户,他说该应用程序在启动后立即崩溃.经过一些初步调试后,客户为我提供了远程访问其中一台无法运行该应用程序的计算机. 我发现崩溃并不是我的应用程序特有的.任何依赖于.NET框架的应用程序都会立即崩溃.
方便的是,安装了Visual Studio 2008,因此我在其上创建了一个快速的hello world应用程序,然后单击Debug.该应用程序工作正常.但是,当我试图在visual studio之外的/bin/Debug/HelloWorld.exe目录中执行生成的二进制文件时,它崩溃了.
我试过的东西清单(更新):
我使用WinDbg创建了一个转储文件.对我来说,这并不是一切.
FAULTING_IP: mscorwks!PEImage::GetEntryPointToken+21 79f4ff9d f6401010 test byte ptr [eax+10h],10h
EXCEPTION_RECORD: 0012f710 -- (.exr 0x12f710) ExceptionAddress: 79f4ff9d (mscorwks!PEImage::GetEntryPointToken+0x00000021) ExceptionCode: c0000005 (Access violation) ExceptionFlags: 00000000 NumberParameters: 2 Parameter[0]: 00000000 Parameter[1]: 00000010 Attempt to read from address 00000010
FAULTING_THREAD: 00000b44
PROCESS_NAME: MyProcess.exe
ERROR_CODE: (NTSTATUS) …Run Code Online (Sandbox Code Playgroud) 我有一个phonegap 3.0.0应用程序.我的应用程序涵盖状态栏(带时钟,接收信息等).由于我不是全屏游戏,这是不可取的.
我相信它是作为"全屏"应用运行的.
我在堆栈上找到了相反的帖子(即让应用程序全屏显示),并做了相反的建议.我想知道PhoneGap或者我用来创建项目的PhoneGap CLI是否发生了变化,因为我的应用程序显示全屏.
我试过这个:
public void onCreate(Bundle savedInstanceState)
{
super.onCreate(savedInstanceState);
super.setIntegerProperty("splashscreen", R.drawable.splash);
getWindow().clearFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN);
getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN,
WindowManager.LayoutParams.FLAG_FORCE_NOT_FULLSCREEN);
super.loadUrl(Config.getStartUrl(), 10000);
}
Run Code Online (Sandbox Code Playgroud)
明确告诉它不要处于全屏模式....但它仍然显示全屏.
我已经离开了ZigBee一段时间了.谁拥有最成熟的Zigbee堆栈?是Microchip,Chipcon还是Atmel?
RF模块的价格是否低于10美元?
我记得一段时间后某些堆栈存在一些许可问题......
(这个问题最初是在2009年提出的.截至2012年,我不认为Ember是领先的堆栈.看来德州仪器已成为主导的芯片组/堆栈......虽然,他们的堆栈确实似乎被锁定使用IAR糟糕的IDE会让我三思而后行.)
我需要一种方法来从一个作为我的安装程序的一部分运行的postflight脚本向Login Items添加一个应用程序.它需要在10.5+上工作.优选地,它可以在bash脚本中工作.我的申请已经需要管理权.
我在这里找到的方法:带有参数的Mac OS登录项?似乎是在正确的轨道上(包括在下面)...但是当我在命令行上尝试它并且我不确定如何为所有用户安装或者如果我需要添加逻辑以检查是否在调用此代码之前,它已添加到启动项中.
#!/bin/bash
/usr/bin/osascript -e "tell application \"System Events\" to make new login item with properties { path: \"$1\", hidden:false } at end"
Run Code Online (Sandbox Code Playgroud)
我怀疑我也可以用launchd做点什么.但是,我不确定哪种方法是跨版本兼容性的最佳实践.
注意:我不想在我的应用程序中使用一些objective-c代码添加它.我需要安装程序来添加它. 目前,我所做的是在安装后启动应用程序,然后使用LSSharedFileListRef将其添加到代码中的Login Items ...可以在此处找到该方法的示例:如何在登录时打开应用程序?.这个不合适的原因是我需要在登录屏幕上通过命令行使用Apple Remote Desktop安装我的应用程序.因此,应用程序安装后无需自动启动.
.net ×4
c# ×2
.net-2.0 ×1
android ×1
app-config ×1
appsettings ×1
bash ×1
batch-file ×1
c ×1
callstack ×1
cmd ×1
cordova ×1
crash-dumps ×1
mac-address ×1
macos ×1
networking ×1
node.js ×1
packagemaker ×1
shell ×1
struct ×1
volatile ×1
windows ×1
zigbee ×1