Я использую стороннюю библиотеку, которая поддерживает. NET Core, но не. NET Standard. Они предоставляют отдельные двоичные SDK для каждой платформы, которую они поддерживают; win-x86, linux -x64 и др. c. Для каждой платформы есть CoolSdkDotNetCore.dll и coolsdk.dll / so / dylib. * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
* * * * * * * Файлы CoolSdkDotNetCore.dll
действительно различны для каждой платформы - все они одинакового размера, но имеют разные хэши SHA.
*1003*. * использование идентификаторов времени выполнения, чтобы получить нужные данные для данной платформы, чтобы я мог строить для Windows, docker и т. д. c без необходимости обмениваться двоичными файлами. У меня есть файл проекта, такой как:
<Project Sdk="Microsoft.NET.Sdk">
<PropertyGroup>
<TargetFramework>netstandard2.0</TargetFramework>
<GeneratePackageOnBuild>true</GeneratePackageOnBuild>
<PackageId>CoolSdk.NetStandard</PackageId>
<Version>1.2.3</Version>
<RootNamespace>coolsdk</RootNamespace>
<AssemblyName>coolsdk</AssemblyName>
</PropertyGroup>
<ItemGroup>
<None Pack="true" PackagePath="runtimes/win-x64/native/coolsdk.dll" Update="windows/x64/coolsdk.dll">
<CopyToOutputDirectory>Always</CopyToOutputDirectory>
</None>
<None Pack="true" PackagePath="runtimes/win-x64/lib/netcore/CoolSdkDotNetCore.dll" Update="windows/x64/CoolSdkDotNetCore.dll">
<CopyToOutputDirectory>Always</CopyToOutputDirectory>
</None>
<None Pack="true" PackagePath="runtimes/linux-x64/native/libcoolsdk.so" Update="linux/x64/libcoolsdk.so">
<CopyToOutputDirectory>Always</CopyToOutputDirectory>
</None>
<None Pack="true" PackagePath="runtimes/linux-x64/lib/netcore/CoolSdkDotNetCore.dll" Update="linux/x64/CoolSdkDotNetCore.dll">
<CopyToOutputDirectory>Always</CopyToOutputDirectory>
</None>
</ItemGroup>
</Project>
. Это создает .nupkg
, который, кажется, имеет все, что мне нужно, но проекты-потребители на самом деле не получают ссылку на сборку CoolSdkDotNetCore. В папке bin я вижу папку времени выполнения с компонентами native
, но без папок lib
(папки lib определенно присутствуют в самом nupkg).
Что мне здесь не хватает? Нужно ли мне go вернуться назад и написать nuspec
самостоятельно, вместо того, чтобы пытаться использовать csproj
, чтобы сгенерировать все это для меня, или есть какой-то другой прием, который я могу использовать?
edit:
Изменение указанных выше путей к библиотекам с runtimes/<rid>/lib/netcore
на runtimes/<rid>/netcoreapp
позволяет копировать папки lib в папку bin в потребляющем проекте, но я все еще не могу ссылаться на сборку. Добавление ссылки к CoolSdkDotNetCore
вручную, например:
<Reference Include="CoolSdkDotNetCore">
<HintPath>CoolSdkDotNetCore.dll</HintPath>
</Reference>
Генерирует MSB3245 - Could not resolve this reference...
.