우리 회사의 데이터베이스 함수를 추상화하기 위해 클래스 라이브러리를 작성하고 있지만 코드가 데이터베이스 개체 중 하나를 인스턴스화하면 다음과 같은 결과를 얻습니다.
FileNotFound 예외 :
파일 또는 어셈블리 'MySql.Data, Version = 8.0.13.0, Culture = neutral, PublicKeyToken = c5687fc88969c44d'또는 해당 종속성 중 하나를로드 할 수 없습니다. 시스템이 지정된 파일을 찾을 수 없습니다.
웹 사이트에 명시된 MySql.Data 종속성은 다음과 같습니다.
- .NETStandard 2.0 Google.Protobuf (> = 3.5.1)
- System.Configuration.ConfigurationManager (> = 4.4.1)
- System.Security.Permissions (> = 4.4.1)
- System.Text.Encoding.CodePages (> = 4.4.0)
그러나 모두 자동으로 설치됩니다.
파일 또는 어셈블리를로드 할 수 없음 또는 종속성이없는 위치를 확인하도록 권장 하는 종속성 중 하나를 살펴 봤습니다. 그래서 내가 찾았습니다.하지만 위치를 찾았을 때 누락 된 참조를 수정하는 방법을 알려주지 않습니까?
Process Monitor를 사용 하여 실패한 CreateFile
작업 DLL 호출 을 찾을 수 있었으며 ...\TestingGUI\bin\Debug\MySql.Data\MySql.Data.dll
수동으로 확인하지 않은 것을 참조 했습니다.
실행되는 프로젝트는 MySql.Data에 의존하는 데이터베이스 라이브러리를 참조하는 다른 .NET Standard 클래스 라이브러리 (기본적으로 중개자)를 참조하는 WinForms 앱입니다.
전체 솔루션 디렉터리에서 검색을 수행하면 특히 전체 솔루션 빌드 후에는 MySql.Data.dll 파일이 없습니다.
다음은 내 csproj 파일입니다.
<Project Sdk="Microsoft.NET.Sdk">
<PropertyGroup>
<TargetFramework>netstandard2.0</TargetFramework>
<CopyLocalLockFileAssemblies>true</CopyLocalLockFileAssemblies>
<RootNamespace>App1.Database</RootNamespace>
</PropertyGroup>
<ItemGroup>
<PackageReference Include="MySql.Data" Version="8.0.13" />
</ItemGroup>
</Project>
그렇다면 .NET 마법사는 누구입니까?
최신 정보:
따라서 코드는 .Net Core 콘솔 앱에서 실행할 때 제대로 작동하지만 .NET 앱 (특히 winforms)에서 참조 할 때만 오류가 발생합니다. 그래서 지금은 GUI를 포기하고 .NET Core 콘솔 앱을 사용하고 있습니다. .NET Standard가 모든 것과 호환된다고 생각했지만 아닐까요? 어쨌든 문제가있는 다른 사람을 위해 여기에 내 질문을 보관할 것입니다.
업데이트 2 :
@Itay Podhajcer의 답변 덕분에 NuGet 패키지도 포함하여 .NET Winforms에서 작동하도록 관리했습니다.
같은 문제가 발생했던 기억이납니다. 새로운 너겟 참조 모델과 관련이 있다고 생각합니다. 누락 된 nuget 패키지를 WinForms 프로젝트에 직접 추가해보십시오. 이상적인 솔루션과 는 거리가 멀지 만 작동합니다.
도움이 되었기를 바랍니다.
이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.
침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제
몇 마디 만하겠습니다