2017-04-13 59 views
2

我有,我定义了一些类这样一个简单的DLL:VS2017创建多个框架,一个lib目标

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

我加了一个NuGet包Newtonsoft.Json

此DLL必须由netcoreapp1.1net462消耗。

我试图修改的csproj,并将此

<TargetFramework>netstandard1.5</TargetFramework> 

如果我启动DOTNET生成DLL是成功打造,但我不能使用来自磊科应用程序既不是来自net462

特别是DLL如果我添加一个xUnit测试和基准的DLL里面一类是引发错误:

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

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

UPDATE

为了找到相关的组件必须添加下面的代码上的xUnit的.csproj

<OutputType>Exe</OutputType> 
+0

你可以在中添加几个框架,用分号分隔 – Alexan

回答

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,.Net Frameworkaccording to this blog(注意标签的复数形式)。

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

也许它会工作没有net462,因为它应该支持1.6版本,我将在后面这个更新。

而且我发现xUnit博客帖子大约running tests against multiple targets,他们用这样的:

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

需要注意的是,他们已经有针对性的netcoreapp,而不是netstandard

+0

我已经修改了像这样的标签 net462; netcoreapp1.1,现在编译并运行。我找到了[netstandard table](https://github.com/dotnet/standard/blob/master/docs/versions.md)的github netstandard链接,但我认为微软有一些困惑。 – Max

+0

xUnit继续提出有关找不到dll的错误,但是如果我编写一个简单的控制台程序它运行 – Max

+0

我认为MS只需等待2.0版本的标准 – VMAtm

相关问题