我刚刚在我的项目中添加了Microsoft.VisualStudio.TestTools.UITesting
的引用,我尝试使用ImageComparer`类但是在运行时遇到错误
private void Form1_Load(object sender, EventArgs e)
{
Image a = Image.FromFile(@"C:\Users\itapi\Desktop\a.png");
Image b = Image.FromFile(@"C:\Users\itapi\Desktop\b.png");
ImageComparer.Compare(a,b);
}
错误是
“System.TypeInitializationException”类型的未处理异常 发生在Microsoft.VisualStudio.TestTools.UITesting.dll
中附加信息:类型初始化程序 'Microsoft.VisualStudio.TestTools.UITest.Extension.UITestUtilities' 抛出异常。
有没有人知道这里有什么问题?
这是内心的掠夺
System.TypeInitializationException:类型初始值设定项 'Microsoft.VisualStudio.TestTools.UITest.Extension.UITestUtilities' 抛出一个例外。 ---> System.IO.FileNotFoundException:无法 加载文件或程序集 “Microsoft.VisualStudio.TestTools.UITest.WindowsStoreUtility, Version = 12.0.0.0,Culture = neutral,PublicKeyToken = b03f5f7f11d50a3a'或 其中一个依赖项。系统找不到指定的文件 在 Microsoft.VisualStudio.TestTools.UITest.Extension.UITestUtilities..cctor() ---内部异常堆栈跟踪结束---在Microsoft.VisualStudio.TestTools.UITest.Extension.UITestUtilities.CheckForNull(Object 参数,String parameterName)at Microsoft.VisualStudio.TestTools.UITesting.ImageComparer.CompareInternal(图片 actualImage,Image expectedImage,ColorDifference argbTolerance, 图像&安培; diffImage,Boolean createOutImage)at Microsoft.VisualStudio.TestTools.UITesting.ImageComparer.Compare(图片 actualImage,Image expectedImage,ColorDifference argbTolerance)at Microsoft.VisualStudio.TestTools.UITesting.ImageComparer.Compare(图片 actualImage,Image expectedImage)at WindowsFormsApplication4.Form1.Form1_Load(Object sender,EventArgs e) 在c:\ Users \ itapi \ OneDrive \ ?????? \ Visual Studio中 2013 \项目\ WindowsFormsApplication4 \ WindowsFormsApplication4 \ Form1.cs中:行 30
答案 0 :(得分:8)
无法加载文件或程序集' Microsoft.VisualStudio.TestTools.UITest.WindowsStoreUtility ...
完全可以预料到的。此程序集仅用于 Visual Studio中的。它存在于C:\ Program Files(x86)\ Microsoft Visual Studio 12.0 \ Common7 \ IDE \ PrivateAssemblies目录中,远离Winforms应用程序。 CLR永远不会找到它。
对于Microsoft.VisualStudio.TestTools.UITesting.dll程序集也是如此,但是你在bin \ Debug目录中得到了一个副本,因为你引用了它。
这些程序集仅用于创建单元测试,即使用Test>运行的类型。运行菜单项。用于创建编码的UI测试的MSDN how-to文章is here。
您可以使用XCOPY in a post build event复制缺失的程序集。但是使用集成单元测试功能当然是最好的,也是获得最小保证的唯一正确方法,即在更新VS版本时仍然可以使用。
答案 1 :(得分:1)
这个问题让我很困惑。为什么要关注异常而不是问题呢?看来你想要比较图像。为什么不问如何比较图像?快速搜索会产生许多结果,例如Fast Bitmap comparison - C#。我搜索了c# compare images
,那是第10个链接。之前的其他人也有承诺。您想要什么结果是真/假,百分比匹配,仅图像和exif数据不匹配,其他?
另外,当我查看ImageComparer.Compare on MSDN的文档时,签名与此问题中的示例代码不同。关于使用情况,文档似乎很差,如果它应该在Visual Studio中使用,正如其他人所讨论的那样。