나는이 문제에 대해 몇 가지 유사한 주제가 있다는 것을 알고 있지만 (저를 믿으십시오, 지난 이틀 동안 모든 것을 읽었습니다), 그들 중 어느 것도 내 이상한 상황에서 도움이되지 않았습니다.
그래서 나는 여기에 와서 누군가가 문제가 될 수있는 것을 가르쳐 줄 수있을 것입니다.
C # (WPF) 컨트롤의 소스 인 TreeListView가 있습니다.
다음 매개 변수와 함께 csc.exe (더 큰 프로젝트의 일부, IDE는 컴파일에 사용되지 않음)를 사용하여 VS2015 dev 명령 프롬프트로 컴파일됩니다.
/reference:"System.Xaml.dll"
/reference:"C:\Program Files (x86)\Reference Assemblies\Microsoft\Framework\.NETFramework\v4.5\PresentationCore.dll"
/reference:"C:\Program Files (x86)\Reference Assemblies\Microsoft\Framework\.NETFramework\v4.5\WindowsBase.dll"
/reference:"C:\Program Files (x86)\Reference Assemblies\Microsoft\Framework\.NETFramework\v4.5\WindowsFormsIntegration.dll"
/reference:"C:\Program Files (x86)\Reference Assemblies\Microsoft\Framework\.NETFramework\v4.5\PresentationFramework.dll"
/nowarn:1701,1702 /errorreport:prompt /warn:4 /platform:x86 /define:DEBUG;TRACE /debug+ /debug:full /optimize- /target:library /out:..\debug\TreeListView.dll
...here all the .cs source files are listed...
/resource:"..\TreeListView\obj\debug\TreeListView.g.resources"
모든 C # / WPF DLL은 명령 줄에서 동일한 옵션으로 컴파일됩니다.
잘 컴파일되고 TreeListView.dll이 있습니다. 강력한 이름이 아닙니다.
mainApp.exe 옆에 복사되고 메인 앱을 실행 하고이 TreeListView로 창을 사용하려고 할 때 예외가 발생했습니다.
*** Exception ***: System.IO.FileLoadException
Message: Could not load file or assembly 'TreeListView, PublicKeyToken=ffedd4b1334b06f5' or one of its dependencies.
The located assembly's manifest definition does not match the assembly reference. (Exception from HRESULT: 0x80131040)
Source: mscorlib
csc.exe로 컴파일 된 main_app 은 위에서 컴파일 된 TreeListView.dll의 출력을 정확히 참조 합니다 .
Btw, 그것이 강력한 이름이 아닐 때 공개 키를 표시하는 이유를 모릅니다.
sn -T debug\TreeListView.dll
Microsoft (R) .NET Framework Strong Name Utility Version 4.0.30319.0
Copyright (c) Microsoft Corporation. All rights reserved.
debug\TreeListView.dll does not represent a strongly named assembly
기타 관찰
VS2015 IDE에서 새 WPF 앱을 만들고 위의 컴파일 된 TreeListView.dll을 참조하고 XAML에서 컨트롤을 사용했습니다. 즉, GUI XAML 디자이너에 즉시 표시됩니다 Could not load file or assembly 'TreeListView, PublicKeyToken=ffedd4b1334b06f5' or one of its dependencies. The system cannot find the file specified.
(여기서 오류는 The system cannot find the file specified.
).
IDE가 더 많은 정보를 제공하지만 여기서 새로운 것은 없습니다.
기타 정보 : 이 전체 빌드 / 실행 프로세스는 VS2008 (.NET3.5)에서 잘 작동했습니다. 이제 VS2015 (.NET4)로 이동 한 후이를 경험하고이 TreeControl.dll 만 사용하면됩니다.
ILSpy, ildasm, ProcessMonitor for file not found 등을 사용하여 해당 dll, 사용 된 프레임 워크의 모든 참조를 확인했지만 유용한 것을 찾을 수 없었습니다.
ildasm> TreeControl.dll 매니페스트-나에게도 괜찮아 보입니다.
// Metadata version: v4.0.30319
.assembly extern mscorlib
{
.publickeytoken = (B7 7A 5C 56 19 34 E0 89 ) // .z\V.4..
.ver 4:0:0:0
}
.assembly extern PresentationFramework
{
.publickeytoken = (31 BF 38 56 AD 36 4E 35 ) // 1.8V.6N5
.ver 4:0:0:0
}
.assembly extern System.Xaml
{
.publickeytoken = (B7 7A 5C 56 19 34 E0 89 ) // .z\V.4..
.ver 4:0:0:0
}
.assembly extern WindowsBase
{
.publickeytoken = (31 BF 38 56 AD 36 4E 35 ) // 1.8V.6N5
.ver 4:0:0:0
}
.assembly extern PresentationCore
{
.publickeytoken = (31 BF 38 56 AD 36 4E 35 ) // 1.8V.6N5
.ver 4:0:0:0
}
.assembly extern System
{
.publickeytoken = (B7 7A 5C 56 19 34 E0 89 ) // .z\V.4..
.ver 4:0:0:0
}
.assembly extern System.Core
{
.publickeytoken = (B7 7A 5C 56 19 34 E0 89 ) // .z\V.4..
.ver 4:0:0:0
}
무엇을 확인해야할지 알면 정말 감사하겠습니다.
런타임에 실패한 바인딩에 Fuslogvw를 사용해보십시오. 애플리케이션 세트를 실행할 때 'Log binding failures to disk'로 설정합니다.
실패한 바인딩은 창에 기록됩니다. 로그를 두 번 클릭하면 어떤 dll이 TreeListView 어셈블리를로드 하려는지와 해당 dll을 찾으려고하는 모든 위치에 대한 전체 세부 정보를 얻을 수 있습니다.
이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.
침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제
몇 마디 만하겠습니다