2017-05-18 1 views
0

.NetCoreApp 테스트 프로젝트에서 패키지 네임 어셈블리와 동일한 어셈블리를 사용하도록 로컬 네이티브 어셈블리를 참조하는 방법을 찾으려고합니다..NetCoreApp 프로젝트에서 사용하는 네이티브 어셈블리의 로컬 대체

RSA를 사용하여 암호화 된 데이터베이스에 거의 액세스 할 필요없이 .NetStandard 1.6 라이브러리 프로젝트에서 Microsoft.Data.Sqlite를 사용하고 있습니다. 라이브러리는 .Net Framework 4.7 WinForms 실행 파일과 .NetCoreApp 웹 사이트에서 사용됩니다.

.NET Framework에서 "Microsoft.Data.Sqlite.Core" "SQLitePCLRaw.bundle_e_sqlite3"nuget 패키지를 추가하여이 작업을 수행 할 수 있습니다. x86 \ SQLite.Interop.dll을 bin 폴더의 x86 \ e_sqlite3.dll에 복사하고 Batteries.Init()를 호출합니다.

.NetCoreApp의 경우 x86 \ SQLite.Interop.dll을 런타임 \ win7-x86 \ native \ e_sqlite3.dll에 복사하지만이 어셈블리는 .nuget \ packages \ sqlitepclraw.lib에서 일치하는 버전을 삭제 한 경우에만 참조됩니다 .e_sqlite3.v110_xp \ 1.1.5 \ runtimes \ win7-x86 \ native.

누구든지 패키지 폴더의 어셈블리보다 로컬 어셈블리를 사용할 수있는 방법을 알고 있습니까?

답변

0

우리는 항상 목적지 인 넛 게 (nuget)에 라이브러리를 추가하여이를 해결했습니다. 필자는 직접적인 참조가있는 라이브러리의 초기 개발을 선호합니다.

네이티브 어셈블리가 어떻게 발견되는지 더 잘 이해하고 싶지만, 이것은 중요한 경우입니다.

+0

작동시키기 위해 사용한 너겟 패키지의 형식을 공유 할 수 있습니까? win-x86 관리되지 않는 DLL이 있고 대상 프로젝트에 추가 될 때 관리되지 않는 dll을 포함하는 .net 표준 라이브러리를 패키지화하려고합니다. –

+0

위의보다 자세한 답변을 게시했습니다. 스택 오버플로를 사용하는 방법을 찾았어야합니다 :-) – user1859244

0

당신은 나를 용서해야합니다, 나는이 문제를 약 18 개월 만에 보지 못했지만, nuspec 파일은 아래와 같습니다. 이 목표가 .Net Framework 및 .Net Core 모두에서 작동 할 수 있도록 목표를 올바르게 잡으려면 시간이 걸렸습니다. 이는 분명히 Windows에서만 작동합니다.

<package> 
    <metadata> 
      <id>$id$</id> 
      <version>$version$</version> 
      <authors>$authors$</authors> 
      <owners>$authors$</owners> 
      <description>$description$</description> 
      <id>MyCompany.SqlLite.Portable</id> 
      <requireLicenseAcceptance>false</requireLicenseAcceptance> 
     <dependencies> 
      <group targetFramework=".NETStandard1.6"> 
       <dependency id="NETStandard.Library" version="1.6.1" exclude="Build,Analyzers" /> 
       <dependency id="Microsoft.Data.Sqlite.Core" version="2.0.0-preview1-final" exclude="Build,Analyzers" /> 
       <dependency id="SQLitePCLRaw.bundle_e_sqlite3" version="1.1.5" exclude="Build,Analyzers" /> 
       <dependency id="System.ServiceModel.Http" version="4.3.0" exclude="Build,Analyzers" /> 
       <dependency id="System.ServiceModel.Security" version="4.3.0" exclude="Build,Analyzers" /> 
      </group> 
     </dependencies> 
    </metadata> 
    <files> 
     <file src="$output$\**\*.dll" target="lib\" /> 

     <file src="x64\SQLite.Interop.dll" target="content\x64\e_sqlite3.dll"/> 
     <file src="x86\SQLite.Interop.dll" target="content\x86\e_sqlite3.dll"/> 

     <file src="x64\SQLite.Interop.dll" target="runtimes\win7-x64\native\e_sqlite3.dll"/> 
     <file src="x86\SQLite.Interop.dll" target="runtimes\win7-x86\native\e_sqlite3.dll"/> 
    </files> 
</package> 
관련 문제