我最近将MSTest项目升级到.NET 4.0和VS 2010.一些测试查询外部供应商服务,从而提示用户提供必要的凭据以通过我们的公司Web代理进行通信。这曾经在vs2008中正常工作,但在升级之后,只有当用户在开始测试后立即将焦点从VS切换到另一个应用程序时,才会显示对话框。显示对话框时有什么特别需要做的吗?我能想到的最好的是,在重新设计VS时引入了一些WPF警告。
有问题的代码
private void PromptUser()
{
if (!credentialsSet)
{
using (CredentialsDialog dialog = new CredentialsDialog(true))
{
Process process = Process.GetCurrentProcess();
IWin32Window window = Control.FromHandle(process.MainWindowHandle);
DialogResult dr = dialog.ShowDialog(window);
if (dr == DialogResult.Cancel)
{
throw new InvalidOperationException("Credentials not entered");
}
credentials = dialog.Credentials;
user = dialog.Username;
password = dialog.Password;
domain = dialog.Domain;
}
credentialsSet = true;
}
}
答案 0 :(得分:1)
我觉得需要凭据是不好的做法。您是否考虑过将您的凭据添加到测试程序集的配置中。
如果您尝试将其设置为自动构建,则会遇到很多问题。
答案 1 :(得分:1)
您可能需要激活对话框才能让它弹出您活动的任何程序。
using (CredentialsDialog dialog = new CredentialsDialog(true))
{
Process process = Process.GetCurrentProcess();
IWin32Window window = Control.FromHandle(process.MainWindowHandle);
dialog.Activate();
DialogResult dr = dialog.ShowDialog(window);
// ...
}
http://msdn.microsoft.com/en-us/library/system.windows.forms.form.activate.aspx