我有一个简单的Dll,我在这里定义了一些类:
public class Parameters
{
public string Message { get; set; }
}
我添加了一个NuGet包Newtonsoft.Json
。
此DLL必须由 netcoreapp1.1 和 net462 使用。
我试图修改csproj并添加了这个
<TargetFramework>netstandard1.5</TargetFramework>
如果我启动了dotnet构建,则dll已成功构建,但我无法从net462使用netcore应用程序中的DLL
特别是如果我添加xUnit
测试并在DLL中引用一个类,则会引发错误:
System.IO.FileLoadException
:无法加载文件或程序集&System; Run.Runtime,Version = 4.1.0.0 [..]
任何人都可以向我解释一下net462
,netcoreapp
和netstandard1.5
目标框架的工作原理?如何构建一个dll交叉框架?
更新
要查找相关程序集,必须在xunit .csproj
上添加以下代码<OutputType>Exe</OutputType>
答案 0 :(得分:1)
您可以找到.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,和 {{1} },according to this blog(注意复数形式的标签)。
.Net Framework
也许它可以在没有<TargetFrameworks>netstandard1.6.1;net462</TargetFrameworks>
的情况下工作,因为它应该支持1.6版本,我将在稍后更新。
我还发现了net462
关于running tests against multiple targets的博文,他们使用了这个:
xUnit
请注意,他们定位的是<PropertyGroup>
<TargetFrameworks>net452;netcoreapp1.1</TargetFrameworks>
</PropertyGroup>
,而不是netcoreapp
。