当前位置:  开发笔记 > 编程语言 > 正文

在C#单元测试中使用64位本机.DLL

如何解决《在C#单元测试中使用64位本机.DLL》经验,为你挑选了1个好方法。

我有一个由CMake自动生成的vcxproj文件构建的64位本机库。CMake构建脚本的一部分会在csharp中自动生成Swig文件。我使用下面标记为Articaft 1的.csproj 构建Swig生成的.cs文件。然后,我有一个C#单元测试项目Artifact 2,下面引用了从Articaft 1生成的.dll 。Articafct 2还会复制由64位本机库生成的dll。

如果我将本机库编译为32位库,那么一切正常,但是如果我在C#单元测试项目中使用64位本机库,则测试将失败并显示以下内容:

C:\Users\mehoggan\Devel\QuadKeys\UnitTestCSharp\TestBingSystem.cs:line 13
Result Message: 
Test method QuadKeyTests.TestBingSystem.TestCtor threw exception: 
System.TypeInitializationException: The type initializer for 'QuadKeyNS.SwigQuadKeyPINVOKE' threw an exception. ---> System.TypeInitializationException: The type initializer for 'SWIGExceptionHelper' threw an exception. ---> System.BadImageFormatException: An attempt was made to load a program with an incorrect format. (Exception from HRESULT: 0x8007000B)

如何获得C#单元测试以使用库的64位版本?


神器1



    
    
        Debug
        AnyCPU
        f7fe6699-ce1d-443b-b6e9-05eb4e135ac6
        Library
        Properties
        QuadKeyCSharp
        QuadKeyCSharp
        v4.5.2
        512
    
    
        true
        full
        false
        bin\Debug\
        DEBUG;TRACE
        prompt
        4
    
    
        pdbonly
        true
        bin\Release\
        TRACE
        prompt
        4
    
    
        
        
        
        
        
        
        
        
    
    
        
        
    
    


神器2



    
        Debug
        AnyCPU
        {1306B89A-7ED0-4A90-B7A2-6A39ABD9016C}
        Library
        Properties
        UnitTestCSharp
        UnitTestCSharp
        v4.5.2
        512
        {3AC096D0-A1C2-E12C-1390-A8335801FDAB};{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}
        10.0
        $(MSBuildExtensionsPath32)\Microsoft\VisualStudio\v$(VisualStudioVersion)
        $(ProgramFiles)\Common Files\microsoft shared\VSTT\$(VisualStudioVersion)\UITestExtensionPackages
        False
        UnitTest
    
    
        true
        full
        false
        bin\Debug\
        DEBUG;TRACE
        prompt
        4
    
    
        pdbonly
        true
        bin\Release\
        TRACE
        prompt
        4
    
    
        
            ..\Swig\bin\$(Configuration)\QuadKeyCSharp.dll
        
    
    
    
        
            
                
            
        
        
            
                
            
        
    
    
        
    
    
        
    
    
        
            
                
                    False
                
                
                    False
                
                
                    False
                
                
                    False
                
            
        
    
    
    
    
        copy "$(ProjectDir)..\build\QuadKey\$(Configuration)\QuadKey.dll" "$(ProjectDir)bin\$(Configuration)\SwigQuadKey.dll" /Y
    

Michael Gunt.. 5

您正在将VSTest作为32位进程运行。在Visual Studio的“测试”菜单中,您将找到一个告诉VSTest以32位或64位进程运行的设置。只需将其更改为64位,然后将单元测试程序集保留为AnyCPU。



1> Michael Gunt..:

您正在将VSTest作为32位进程运行。在Visual Studio的“测试”菜单中,您将找到一个告诉VSTest以32位或64位进程运行的设置。只需将其更改为64位,然后将单元测试程序集保留为AnyCPU。

推荐阅读
LEEstarmmmmm
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有