c#dll microsoft dll异常

时间:2015-07-07 13:57:04

标签: c# exception dll

我刚刚在我的项目中添加了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

2 个答案:

答案 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中使用,正如其他人所讨论的那样。