gpt4 book ai didi

c# - VS2017 为多个框架目标创建一个库

转载 作者:太空宇宙 更新时间:2023-11-03 12:29:19 25 4
gpt4 key购买 nike

我有一个简单的 Dll,我在其中定义了一些这样的类:

public class Parameters 
{
public string Message { get; set; }
}

我添加了一个 NuGet 包 Newtonsoft.Json

此 DLL 必须由 netcoreapp1.1net462 使用。

我尝试修改csproj并添加了这个

<TargetFramework>netstandard1.5</TargetFramework>

如果我启动 dotnet build,dll 已成功构建,但我无法从 netcore 应用程序或 net462 使用 DLL

特别是如果我添加一个 xUnit 测试并在 DLL 中引用一个类,它会引发错误:

System.IO.FileLoadException: Could not load file or assembly 'System.Runtime, Version=4.1.0.0 [..]

任何人都可以向我解释 net462netcoreappnetstandard1.5 目标框架是如何工作的?以及如何构建一个dll跨框架?

更新

要找到相关程序集,必须在 xunit.csproj 上添加下面的代码

<OutputType>Exe</OutputType>

最佳答案

您可以找到 .Net Standard 平台支持的表格 here .您需要了解 .Net Standard 不是框架,它是库为 .Net Standard 支持实现的规则。

因此,如果您需要您的库同时支持 .Net Core.Net Framework 4.6,您 need to target .Net Standard 1.6.1 (!) ,不是 1.5 或 1.6, .Net Frameworkaccording to this blog (注意标签的复数形式)。

<TargetFrameworks>netstandard1.6.1;net462</TargetFrameworks>

也许没有 net462 它也能工作,因为它应该支持 1.6 版本,我稍后会为此更新。

我还找到了关于 running tests against multiple targetsxUnit 博文,他们使用了这个:

<PropertyGroup>
<TargetFrameworks>net452;netcoreapp1.1</TargetFrameworks>
</PropertyGroup>

请注意,他们针对的是 netcoreapp,而不是 netstandard

关于c# - VS2017 为多个框架目标创建一个库,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43397956/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com