我对Visual Studio 2008中的.NET平台构建选项有一些困惑.
什么是"任何CPU"编译目标,它生成什么类型的文件?我检查了这个"Any CPU"构建的输出可执行文件,发现它们是x86可执行文件(谁也看不到它!).那么,将可执行文件定位到x86与"任何CPU"之间有什么区别吗?
我注意到的另一件事是托管C++项目没有这个平台作为选项.这是为什么?这是否意味着我怀疑"任何CPU"可执行文件是普通的32位可执行文件是对的?
上次我检查时,Docker没有办法让容器访问主机串口或USB端口.是否有允许这样做的技巧?
我需要让非托管的Windows C++客户端与WCF服务进行通信.C++客户端可以在Win2000及更高版本上运行.我可以控制WCF服务和正在使用的C++ API.由于它是专有应用程序,因此最好尽可能使用Microsoft的东西,绝对不是GNU许可的API.那些有它工作的人,你能分享一个循序渐进的过程如何让它运作起来吗?
到目前为止,我已经研究了以下选项:
还有什么想法吗?只有在你真正让自己工作的时候才能回答.
编辑1:我为任何我可能感到困惑的人道歉:我正在寻找的是一种从没有安装.NET框架的客户端调用WCF服务的方法,因此使用基于.NET的帮助库不是一种选择,它必须是纯粹的非托管C++
这是解决此处所述问题的另一种尝试.不幸的是,主题在没有找到足够分辨率的情况下关闭,因为显然原始海报存在符号问题,而不是视觉工作室问题本身.
问题陈述: Visual Studio 2012(以及2010年的同一事件)将在一段时间后停止附加到远程进程,并且"无法访问内存位置".重新启动Visual Studio可以解决问题.
我目前正在使用VS2012更新3,但问题也出现在RTM和所有中间更新中.
该参考线表明修补操作系统修补程序2588507,但是我无法应用它,因为它似乎是不下载的,可能是因为间歇性问题.
有没有人成功地解决了这个问题,如果是,那么如何?
remote-debugging visual-studio-2010 attach-to-process visual-studio-2012
使用C++预处理程序指令,是否可以测试是否已定义预处理程序符号但没有值?像这样的东西:
#define MYVARIABLE
#if !defined(MYVARIABLE) || #MYVARIABLE == ""
... blablabla ...
#endif
Run Code Online (Sandbox Code Playgroud)
编辑:我这样做的原因是因为我正在处理的项目应该从环境中获取一个字符串/DMYSTR=$(MYENVSTR)
,这个字符串可能是空的.如果用户忘记定义此字符串,我想确保项目无法编译.
我正在开发一个在两个后端服务器之间使用一些HTTP通信的项目.服务器使用X509证书进行身份验证.不用说,当服务器A(客户端)建立与服务器B(服务器)的连接时,存在SSL/TLS验证错误,因为使用的证书不是来自受信任的第三方权限.
通常,处理它的方法是使用ServicePointManager.ServerCertificateValidationCallback
,例如:
ServicePointManager.ServerCertificateValidationCallback +=
(sender, cert, chain, error) =>
{
return cert.GetCertHashString() == "xxxxxxxxxxxxxxxx";
};
Run Code Online (Sandbox Code Playgroud)
这种方法有效,除非它不理想.它本质上做的是覆盖应用程序完成的每个http请求的验证过程.因此,如果另一个类将尝试运行HTTP请求,它将失败.此外,如果另一个类ServicePointManager.ServerCertificateValidationCallback
为了自己的目的而覆盖,那么我的通信开始突然失败.
想到的唯一解决方案是创建一个单独的AppDomain来执行客户端HTTP请求.这可行,但实际上 - 只有这样才能执行HTTP请求是愚蠢的.开销将是惊人的.
考虑到这一点,是否有人研究过.NET中是否有更好的实践,这将允许访问Web服务,同时处理客户端SSL/TLS验证而不影响其他Web客户端?
必须有一个简单的方法来做到这一点,我无法相信没有.我已经通过网络进行了扫描,发现了20种不同的方法来查找当前用户所在的域名,但没有找到当前计算机的域名(或工作组).
在非托管c ++中,这可以通过以下方式检索:
WKSTA_INFO_100 *buf;
NetWkstaGetInfo(NULL, 100, (LPBYTE*)buf);
domain_name = pBuf->wki100_langroup;
Run Code Online (Sandbox Code Playgroud)
如果有办法在托管C#本地获取相同的信息,有人可以帮助我吗?
编辑1:伙计们,请阅读问题.我不是在寻找用户域名.
我一直认为,为了使用具有显式指定凭据的Windows身份验证连接到SQL服务器,您必须使用LogonUser,Impersonate,然后连接.
在我看来,这个链接表明,只需在连接字符串中指定"uid = ...; pwd = ..."就可以连接到SQL服务器而不需要这么麻烦.我测试了这种方法只是为了确保它不起作用,而且 - 看哪 - 它没有.如果那个博客文章不在msdn.com上,我会把它当作noob talk解雇,但确实如此.
有谁知道我错过了什么?
编辑1:许多受访者误解了我的意思.这是我所说的复制/粘贴.它不是集成的SQL,也不是由IIS制作的ASP.NET模拟:
string sql4 = String.Format(
@"Data Source={0};Integrated Security=SSPI;uid=<uid>;pwd=<pid>", server);
// Database + Windows Authentication + Username/Password
Run Code Online (Sandbox Code Playgroud) 当新客户端连接到WCF托管服务时,如何触发事件,该怎么办?
编辑:我正在寻找的是在创建新会话或为客户创建新频道时获取事件.如:对于会话关闭我正在使用:
OperationContext.Current.Channel.Closed += new EventHandler( Channel_Closed );
Run Code Online (Sandbox Code Playgroud)
那么我应该如何使用会话iitiation?
如果主机名(字符串)解析为本地计算机,谁能想到在win32或.NET中告诉的简单方法?如:
"myhostname"
"myhostname.mydomain.local"
"192.168.1.1"
"localhost"
Run Code Online (Sandbox Code Playgroud)
此练习的目标是生成一个测试,该测试将告知Windows安全层是否将对计算机的访问视为本地或网络