VS2017 создать библиотеку для нескольких целевых структур
У меня есть простой Dll, где я определил некоторый класс, как это:
public class Parameters
{
public string Message { get; set; }
}
Я добавил пакет NuGet Newtonsoft.Json
,
Эта DLL ДОЛЖНА использоваться netcoreapp1.1 и net462.
Я попытался изменить csproj и добавил это
<TargetFramework>netstandard1.5</TargetFramework>
Если я запускаю сборку dotnet, сборка dll была успешно выполнена, но я не могу использовать DLL из приложения netcore и из net462
В частности, если я добавлю xUnit
проверить и ссылаться на класс внутри DLL, это вызывает ошибку:
System.IO.FileLoadException
: Не удалось загрузить файл или сборку 'System.Runtime, версия =4.1.0.0 [..]
Кто-нибудь может объяснить мне, как работают net462
, netcoreapp
а также netstandard1.5
целевые рамки? А как построить кросс-каркас для dll?
ОБНОВИТЬ
Для поиска соответствующей сборки необходимо добавить код ниже на xunit .csproj
<OutputType>Exe</OutputType>
1 ответ
Вы можете найти столик для .Net Standard
поддержка платформ здесь. Вы должны понимать, что .Net Standard
это не основа, это правила для библиотек, которые нужно реализовать для .Net Standard
служба поддержки.
Итак, если вам нужна ваша библиотека для поддержки обоих .Net Core
а также .Net Framework
4.6, вам нужно нацелиться .Net Standard
1.6.1 (!), А не 1.5 или 1.6, и .Net Framework
Согласно этому блогу (обратите внимание, форма тега во множественном числе).
<TargetFrameworks>netstandard1.6.1;net462</TargetFrameworks>
Может быть, это будет работать без net462
, поскольку он должен поддерживать версию 1.6, я обновлю позже для этого.
Также я нашел xUnit
сообщение в блоге о выполнении тестов против нескольких целей, они использовали это:
<PropertyGroup>
<TargetFrameworks>net452;netcoreapp1.1</TargetFrameworks>
</PropertyGroup>
Обратите внимание, что они нацелены на netcoreapp
, не netstandard
,