2017-12-31 101 views
0

이것은 Visual Studio 2017 V15.5.2이며 제안 된 수정 프로그램이 적용되지 않습니다.Visual Studio Test vs Form 응용 프로그램

간단한 테스트를 통해 "Dim comp"라인에서 예외가 발생하지 않습니다.

System.BadImageFormatException : '파일 또는 어셈블리를로드 할 수 없습니다'System.IO.FileSystem, 버전 = 4.0.1.0, 문화 = 중립, PublicKeyToken = b03f5f7f11d50a3a '또는 해당 종속성 중 하나. 참조 어셈블리를로드하여 실행해서는 안됩니다. 리플렉션 전용 로더 컨텍스트에서만로드 할 수 있습니다. (HRESULT 예외 : 0x80131058) '

아래의 테스트 코드는 있지만 Windows Forms 응용 프로그램에 복사 할 때 거의 동일한 코드가 완벽하게 작동합니다. 일부 수니의 도움을 하나 추가 단계로

Public Class Form1 
    Dim tree As SyntaxTree = VisualBasicSyntaxTree.ParseText("Imports System 
     Imports System.Collections.Generic 
     Imports System.Text 
     Class TestClass 
      Private Sub TestMethod() 
       Dim x = ""Hello, World!"" 
     End Sub 
    End Class") 

    Dim comp As Compilation = VisualBasicCompilation.Create("HelloWorld"). 
      AddReferences(MetadataReference.CreateFromFile(GetType(Object).Assembly.Location), 
          MetadataReference.CreateFromFile(GetType(Form1).Assembly.Location)). 
          AddSyntaxTrees(tree) 

    Dim model As SemanticModel = comp.GetSemanticModel(tree) 
End Class 
+1

[BadImageFormatException 문제 해결] (https://stackoverflow.com/questions/8996653/troubleshooting-badimageformatexception)의 가능한 복제본 – Sunil

+0

Framework를 .Net 4.6.2로 변경하고 프로그램이 작동하지만 4.7.1로 다시 변경합니다. 실패합니다. –

답변

0

아래

Imports Microsoft.CodeAnalysis 
Imports Microsoft.CodeAnalysis.VisualBasic 
Imports Xunit 
Public Class ExpressionTests 
    <Fact> 
    Public Sub SystemConvert() 
     Dim tree As SyntaxTree = VisualBasicSyntaxTree.ParseText(
"Imports System 
Imports System.Collections.Generic 
Imports System.Text 
Class TestClass 
    Private Sub TestMethod() 
     Dim x = ""Hello, World!"" 
    End Sub 
End Class") 

Dim comp As Compilation = VisualBasicCompilation.Create("HelloWorld"). 
      AddReferences(MetadataReference.CreateFromFile(GetType(Object).Assembly.Location), 
          MetadataReference.CreateFromFile(GetType(ExpressionTests).Assembly.Location)). 
          AddSyntaxTrees(tree) 
     Dim model As SemanticModel = comp.GetSemanticModel(tree) 
    End Sub 
End Class 

양식 코드 나는 해결책을 가지고 있습니다. 1 단계 : 테스트 프로젝트의 목표 프레임 워크를 변경합니다 (4.7.1에서 4.6.2로 변경 한 다음 4.7.1로 다시 변경). 2 단계!!! NuGet 명령 Windows에서 Update-Package -reinstall을 입력합니다. 모든 것이 완료되면 작동합니다.