在使用4.6.1的目标框架设置OOB默认Visual Studio 2013 Update 5项目且不进行测试设置的情况下,向系统添加Fakes程序集并设置以下ShimGenerations:
mscorlib.fakes:
<ShimGeneration>
<Clear/>
<Add FullName="System.Collections.ReadOnlyCollectionBase"/>
<Add FullName="System.ApplicationException"/>
<Add FullName="System.IO.Path"/>
<Add FullName="System.Security.SecureString"/>
<Add FullName="Microsoft.Win32.Registry"/>
<Add FullName="Microsoft.Win32.RegistryKey"/>
<Add FullName="System.Activator"/>
<Add FullName="System.Convert"/>
<Add FullName="System.Version"/>
<Add FullName="System.StringComparer"/>
<Add FullName="System.Threading.Thread"/>
</ShimGeneration>
系统伪造品:
<ShimGeneration>
<Clear/>
<Add FullName="System.Text.RegularExpressions.Regex"/>
<Add FullName="System.Diagnostics.FileVersionInfo"/>
<Add FullName="System.Diagnostics.Process"/>
<Add FullName="System.Net.CookieContainer"/>
<Add FullName="System.Net.FtpWebRequest"/>
<Add FullName="System.Net.FtpWebResponse"/>
<Add FullName="System.Net.IPAddress"/>
<Add FullName="System.Net.Dns"/>
<Add FullName="System.Net.Mail.SmtpClient"/>
<Add FullName="System.Net.Mail.MailMessage"/>
<Add FullName="System.Net.NetworkInformation.Ping"/>
<Add FullName="System.Net.NetworkInformation.PingReply"/>
<Add FullName="System.Net.NetworkInformation.PingException"/>
<Add FullName="System.Net.HttpWebRequest"/>
<Add FullName="System.Net.HttpWebResponse"/>
<Add FullName="System.Net.WebHeaderCollection"/>
<Add FullName="System.Net.ServicePoint"/>
<Add FullName="System.Net.NetworkInformation.NetworkInterface"/>
<Add FullName="System.Net.Sockets.TcpClient"/>
<Add FullName="System.Net.Sockets.UdpClient"/>
<Add FullName="System.Net.Sockets.Socket"/>
<Add FullName="System.Net.WebRequestMethods"/>
<Add FullName="System.Net.WebRequest"/>
<Add FullName="System.Uri"/>
</ShimGeneration>
发生以下错误:
“ System.Net.Sockets.SocketClientAccessPolicyProtocol”已过时:“此API支持.NET Framework基础结构,不能直接在您的代码中使用。”
[一些路径\ TestFakes \ UnitTestProject1 \ obj \ Debug \ Fakes \ s \ f.csproj]一些路径\ TestFakes \ UnitTestProject1 \ f.cs
GENERATEFAKES:错误:项目编译失败,退出代码为1
这似乎仅在这种配置下发生。
我不确定如何解决此问题,因为我需要截获大多数.NET框架调用。
最佳答案
在这个问题上花了几天后,我发现了以下内容。以下类“ System.Net.Sockets.Socket”存在此问题。我发现删除此填充程序代,然后删除所有.fakes程序集,然后删除/ Fakes文件夹中的.fakes文件之一,并使用“添加假程序集”对话框重新创建它,将重新创建所有基于.fakes程序集的程序。在/ Fakes文件夹中的.fakes文件上,并允许构建代码。
由于我不需要伪造“ System.Net.Sockets.Socket”,因此这是成功构建和重新运行单元测试的可接受解决方案。特别是对于此类和Fakes框架,这显然是一个问题。
我发现Fakes框架是一个很好的框架,但需要更好的支持。这样的事情很难解决,需要改进。对我来说,以上并不是整体解决方案。我发现,如果MS能够针对上述问题提供更好的反馈和更多详细信息,则解决该问题的方法将更加简单。一个简单的消息(例如“ Shim Generation不支持此类”)就足够了,人们不必花几天时间查看日志,在Web上进行研究和测试。
关于c# - 伪造和.net Framework 4.6.1和系统,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/34446262/