У меня есть C ++ / CLI DLL, которая взаимодействует со сторонней DLL.Я хочу упаковать это как Nuget.
Я следовал это официальное руководство по MS , в этом блоге и , прочитайте этот другой вопрос .
Итак, вот что я сделал:
Сначала я создал правильный файл nuspec:
<?xml version="1.0"?>
<package >
<metadata>
<id>CPlusPlusNativeIFace</id>
<version>1.0.4</version>
<title>CPlusPlusNativeIFace</title>
<authors>Jens Rabe</authors>
<owners>Who owns that</owners>
<requireLicenseAcceptance>false</requireLicenseAcceptance>
<description>A DLL that makes a native third-party DLL available to .net</description>
<releaseNotes>foo</releaseNotes>
<copyright>errm...</copyright>
<tags>foo bar</tags>
</metadata>
<files>
<file src="..\Release\**" target="runtimes/win-x86/lib/net461" />
<file src="..\x64\Release\**" target="runtimes/win-x64/lib/net461" />
<file src="DummyAny\**" target="ref\net461" />
</files>
</package>
Затем я скомпилировал DLL для выпуска x86 и выпуска X64.Затем я создал папку DummyAny
, скопировал содержимое папки x86 и использовал утилиту corflags
, как в ссылках 2 и 3, чтобы убрать 32-битный флаг.
Когда я сейчас nuget pack
и nuget add
, и, пытаясь сослаться на этот пакет в другом проекте, я всегда получаю:
Could not install package 'CPlusPlusNativeIFace 1.0.4'. You are trying to install this package into a project that targets '.NETFramework,Version=v4.6.1', but the package does not contain any assembly references or content files that are compatible with that framework. For more information, contact the package author.
Я дважды проверил правильность файлов:
- У меня есть x86вещи в
runtimes/win-x86/lib/net461
- У меня есть x64 вещи в
runtimes/win-x64/lib/net461
- У меня есть папка
ref/net461
с манипулированной DLL в
Но я все ещене могу загрузить пакет.
Я также пытался поместить DLL-файлы, специфичные для процессора, в runtimes/win-x86/native
и runtimes/win-x64/native
, но безрезультатно.
Что еще мне не хватает?Разве это не работает для проектов C ++ / CLI, созданных на основе .net Framework?