我刚刚收到了一堆遗留的VB6(!)代码,我不断看到在名称末尾用符号声明的函数,例如Private Declare Function ShellExecute& . . ..
我一直无法找到对此重要性的答案,也无法检测到任何使用的模式或已经命名的函数的签名.
任何人都知道那些尾随的&符号对编译器意味着什么,或者至少是否有一些我缺少的约定?到目前为止,我将其作为一个奇怪的程序员写下来,但我想知道它背后是否有任何意义.
这似乎是一个常见的错误,但是当我找到一个解决方法(见下文)时,我无法确定我首先得到它的原因.
我正在将SMTP功能写入我们的应用程序,并且我正在尝试将SSL功能添加到我们已有的工作SMTP中.
我正在测试使用我们公司的MS Exchange服务器,特别是在其上启用的webmail选项.我可以通过我的代码在内部发送电子邮件,不通过身份验证我的连接并匿名发送,但是由于我们公司的政策,这些电子邮件不会转发到外部电子邮件地址.除此之外,我正在为我们的客户编程,他们并不都允许开放中继和/或匿名连接.
我相信Exchange服务器正在使用显式SSL/TLS.我已经尝试telnet到端口25上的服务器地址并获得文本响应,人类可读的响应,根据我以前的一些搜索意味着它使用显式SSL/TLS.
我有以下测试代码
SmtpClient SMTPClient = new SmtpClient(webmailaddress);
SMTPClient.Port = 25;
SMTPClient.UseDefaultCredentials = true;
SMTPClient.EnableSsl = true;
System.Net.Mail.MailMessage Message = new `
System.Net.Mail.MailMessage(emailFrom,emailTo,subject,body);
SMTPClient.Send(Message);
Run Code Online (Sandbox Code Playgroud)
在我搜索解决方案期间,我遇到了"远程证书根据验证程序无效".使用Gmail SMTP服务器
从中我得到以下代码......
ServicePointManager.ServerCertificateValidationCallback = new RemoteCertificateValidationCallback(ValidateServerCertificate);
public static bool ValidateServerCertificate(object sender,X509Certificate certificate,X509Chain chain,SslPolicyErrors sslPolicyErrors)
{
if (sslPolicyErrors == SslPolicyErrors.None)
return true;
else
{
if (System.Windows.Forms.MessageBox.Show("The server certificate is not valid.\nAccept?", "Certificate Validation", System.Windows.Forms.MessageBoxButtons.YesNo, System.Windows.Forms.MessageBoxIcon.Question) == System.Windows.Forms.DialogResult.Yes)
return true;
else
return false;
}
}
Run Code Online (Sandbox Code Playgroud)
这适用于我的测试代码.然而,我正在编写的实际过程(而不是我的测试代码)将在后台运行,并且无法真正询问用户(而是报告Windows错误日志中的错误).
在我开始时,我的问题就是为什么我会收到这个错误.如果我在浏览器中访问https:webmail.ourdomain.co.uk,它会显示一个有效的证书,并且没有安装证书的选项(正如我自己签署的那样).
然而,当我运行我的代码,并在ValidateServerCertificate方法调试中断Poing的,我看证书的价值观和看到我们的本地服务器的发行人"之前没有使用",且性能"后,不使用"今天.这与我得到的证书不符.
我还检查了ValidateServerCertificate调试中的sslPolicyErrors标志,它们显示"RemoteCertificateChainErrors"和"RemoteCertificateNameMismatch".
那么我对此缺少什么...为什么它没有使用正确的证书?如果我需要在本地安装证书才能使用它,那么我需要了解它们,这样我就可以告诉客户如果他们得到了这个,该怎么做.
我不想通过从ValidateServerCertificate方法返回true来绕过检查,并且因为它是后台进程我不能问用户,所以我需要了解如何让我的代码使用正确/可信证书.
希望有人可以提供建议.
我有一个程序打开一个Excel COM对象,做一些东西,并关闭它.然后我想在文件关闭后移动它.如果我运行没有断点的程序,这可以正常工作.但是,如果我在尝试移动文件之前进入调试模式,我会得到一个IOException:"进程无法访问该文件,因为它正被另一个进程使用."
那是什么交易?当一个程序被允许以全速运行而不是在我踩过它时,垃圾收集是否表现更好?踩着我的代码做的不仅仅是非常缓慢地运行它吗?调试模式还有其他后果吗?遇到的其他错误只是因为我在调试而没有运行exe?
我正在尝试打开一个(实际上有数百个)excel文件.我打开应用程序但想要在我打开的每个工作簿周围使用Using()功能.为什么会导致错误?
using (Excel.Workbook wbXL = appXL.Workbooks.Open(_sourceFullPath, Type.Missing, Excel.XlFileAccess.xlReadOnly))
{
//stuff with wbXL
}
Run Code Online (Sandbox Code Playgroud)
使用获取红色下划线并说"'Microsoft.Office.Interop.excel.Workbook':在using语句中使用的类型必须可以隐式转换为'System.IDisposable'.
如何使这项工作?
我有一个单一项目文件的解决方案.我正在部署为ClickOnce应用程序.这一切都运行良好,在我的计算机上,但当我尝试在别人的运行它时,我得到这个错误
System.IO.FileNotFoundException: Could not load file or assembly 'System.Windows.Forms.DataVisualization, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35' or one of its dependencies. The system cannot find the file specified.
File name: 'System.Windows.Forms.DataVisualization, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35'
System.Windows.Forms.DataVisualization 在我的项目中加载facet作为参考,我相信在使用它的地方是合适的使用语句.
当我转到我的项目属性>发布>应用程序文件... System.Windows.Forms.DataVisualization旁边有一个感叹号,工具提示文本"项目不再引用该项目.如果不再需要,可以通过右键单击该项目来删除它." 发布状态为"包含",哈希为"包含".但是,发布状态不是"包含(自动)"; Exclude旁边有自动文本.但无论我是包含还是排除,我在别人的机器上运行时都会遇到同样的错误.
您认为我应该怎样做才能正确引用此文件?
谢谢
更新:
我尝试过设置Local Copy = true,构建重建无济于事.
我现在正在审查所有其他建议.(在我和电脑之间走了很长一段路不行!)
我有这样的 XAMl
<Image x:Name="MyImage">
<Image.Source>
<BitmapImage UriSource="{Binding FullPhotoPath}" CacheOption="OnLoad" />
</Image.Source>
</Image>
Run Code Online (Sandbox Code Playgroud)
只要 FullPhotoPath 存在,这就可以正常工作。如果没有,那么它会抛出异常
“System.Windows.Media.Imaging.BitmapImage”的初始化引发异常。
我意识到我可以只使用图像标签
要显示图像,如果它不存在,则不会显示任何内容(并且不会引发异常),但据我所知,此语法不允许我使用CacheOption.
如果图像路径不存在,如何不显示任何内容?
为什么我不允许使用具有相同签名的静态和非静态方法?
假设我有一个这样的课程
public class TestClass
{
public object thing { get; set; }
public TestClass()
{
}
public TestClass(object thing)
{
this.thing = thing;
}
public static TestClass ConvertTestClass(object thing)
{
return new TestClass(thing);
}
public TestClass ConvertTestClass(object thing)
{
this.thing = thing;
return this;
}
}
Run Code Online (Sandbox Code Playgroud)
我试着像这样使用它
public class SomeOtherClass
{
public SomeOtherClass()
{
TestClass tc = TestClass.ConvertTestClass(new object());
TestClass tc2 = new TestClass();
tc2.ConvertTestClass(new object());
}
}
Run Code Online (Sandbox Code Playgroud)
我收到以下错误 TestClass.ConvertTestClass(new object());
以下方法或属性之间的调用是不明确的:'TestClass.ConvertTestClass(object)'和'TestClass.ConvertTestClass(object)'
和这些错误 tc2.ConvertTestClass(new object());
以下方法或属性之间的调用是不明确的:'TestClass.ConvertTestClass(object)'和'TestClass.ConvertTestClass(object)'
无法使用实例引用访问成员'TestClass.ConvertTestClass(object)'; 用类型名称来限定它
编译器真的不能告诉该方法的静态和非静态版本之间的区别,或者我在这里遗漏了什么? …
我在我的项目中有一个设置,当从代码引用时(即我将鼠标悬停在对象上,我可以看到该值),与Properties.Settings文件中的内容不同.这是一个旧的价值.我可以转到设置编辑器并将值更新为其他值,但旧值仍然存在.如果我使用.Properties.Settings.Default.Save()方法,则会更改设置,但是当我停止调试时,该更改不会反映在编辑器中.我可以在文本编辑器中打开Settings.settings文件,它会向我显示与VS中的设置编辑器中的内容相同的内容.我也可以在我的计算机上搜索其他的Settings.settings文件,只显示那些文件(其他文件显示但是它们显然不相关,修改了旧日期,并且没有相同的设置名称.)
这个文件在哪里,为什么价值与我认为的不同?
编辑:
我无法让我的原始设置变量再次同步,所以我使用设置GUI界面创建了一个新的设置变量.它似乎正在正常传播.每个人建议我查看的所有文件都有我希望我的设置变量的值,但是当我运行调试会话并查看相同的变量时,它是一些我无法追踪的旧值.
现在我回想起来,大约1.5个月前,我遇到了另一个变量的类似问题但我没有深入挖掘这个时间.我不得不做同样的事情.创建一个新的类似命名变量,删除旧变量并移动一个变量.
编辑2:
更改设置变量名称并让VS通过它自己的程序传播该更改似乎也是一种硬重启.
以下连接适用于Access,但我需要添加第四个连接.
FROM ((Agents
LEFT JOIN Resignation_Pool ON Agents.PF = Resignation_Pool.PF)
LEFT JOIN Teams ON Agents.Team = Teams.ID)
LEFT JOIN Skills ON Agents.PF = Skills.PF
Run Code Online (Sandbox Code Playgroud)
当我添加第四个连接时,它不起作用.我知道Access的括号很奇怪,但我认为我有它们所属的地方.查询只是永远不运行(它应该不会长时间运行),我最终取消它.有什么建议?
FROM (((Agents
LEFT JOIN Resignation_Pool ON Agents.PF = Resignation_Pool.PF)
LEFT JOIN Teams ON Agents.Team = Teams.ID)
LEFT JOIN Skills ON Agents.PF = Skills.PF)
LEFT JOIN OneMore ON Agents.OM = OneMore.OM
Run Code Online (Sandbox Code Playgroud)
这是有效的代码 - 我的实际查询而不是我发现的类似的查询.
SELECT DISTINCT A02.PID, A02.PS, A02.PN, A02.PM, C01.RC, C01.IC, C01.RD
INTO AutoCR
FROM ((02_CorrectResults A02
LEFT OUTER JOIN dbo_pol_PGI C01
ON (A02.PID = …Run Code Online (Sandbox Code Playgroud)