我有一堆在Autofac中注册的类型,而且一些依赖项相当深.是否有内置的方法来测试我可以解决所有注册类型?我希望在应用程序启动时快速失败,而不是在几分钟后部分失败.
这就是我目前所做的,它似乎有效,但我仍然想知道是否有更好的方法.
public void VerifyAllRegistrations()
{
foreach (IComponentRegistration registration in _container.ComponentRegistrations)
{
bool isNewInstance;
registration.ResolveInstance(_container, new Parameter[0], new Disposer(), out isNewInstance);
}
}
private class Disposer : IDisposer
{
public void Dispose()
{
// no-op
}
public void AddInstanceForDisposal(IDisposable instance)
{
instance.Dispose();
}
}
Run Code Online (Sandbox Code Playgroud) 出于某种原因,我找不到一个,但是某人必须已经创建了一个.NET IO库包装器.我希望能够模拟对File.Exists等的调用,并且内置的静态方法不能很好地解决这个问题.
在过去的一周里,我一直在努力解决厨师COOK-1172的问题但没有取得多大成功.我正在尝试使用Chef-Solo配置程序通过Vagrant安装SQL Server 2008 R2 Developer Edition(在我的情况下).
我已经能够通过直接通过Ruby WinRM gem重现Chef之外的问题,然后使用自定义PowerShell脚本修复它,该脚本使用传递的凭据在guest虚拟机Windows vagrant框上启动setup.exe进程.换句话说,WinRM gem调用一个远程PS脚本,该脚本在指定的凭据下启动SQL Server setup.exe,这是有效的.
但是,通过 guest-solo在guest虚拟机上运行相同的完全脚本失败,并出现InvalidOperationException:无法生成临时类.
Ruby脚本和我用于测试的嵌入式PowerShell脚本,它是从我的OS X主机调用的:
require 'winrm'
endpoint = 'http://localhost:5985/wsman'
user = password = 'vagrant'
ps = <<EOH
function ps-runas ([String] $cmd, [String] $arguments)
{
Write-Host "ps-runas cmd: $cmd"
Write-Host "ps-runas args: $arguments"
$secpasswd = ConvertTo-SecureString "vagrant" -AsPlainText -Force
$process = New-Object System.Diagnostics.Process
$setup = $process.StartInfo
$setup.FileName = $cmd
$setup.Arguments = $arguments
$setup.UserName = "vagrant"
$setup.Password = $secpasswd
$setup.Verb = "runas"
$setup.UseShellExecute = $false
$setup.RedirectStandardError …
Run Code Online (Sandbox Code Playgroud) .net ×1
autofac ×1
c# ×1
chef-infra ×1
mocking ×1
powershell ×1
sql-server ×1
vagrant ×1
winrm ×1