如何将.Net核心类库(.NetStandard v1.5)用于.Net Framework 4.6.2应用程序

时间:2016-05-27 11:58:49

标签: c# .net .net-core

根据Mapping the .NET Platform Standard to platforms .NET平台标准1.5必须与.NET Framework 4.6.2兼容。我试图使用它(创建新的.NET Platform Standard类库,然后是新的.Net Framework 4.6.2控制台应用程序),但是库无法识别。我做错了什么?

类库中的project.json:

{
  "version": "1.0.0-*",

  "dependencies": {
    "NETStandard.Library": "1.5.0-rc2-24027"
  },

    "frameworks": {
        "netstandard1.5": {
            "imports": "dnxcore50",
            "buildOptions": { "embed": "true" }
        }
    }
}

2 个答案:

答案 0 :(得分:1)

如果您获得了最新的.net核心RTM版本和Update 3 VS工具,那么事情比RC期间的更好。仍然没有来自csproj引用xproj的简单项目引用 - 但是,你可以通过将xproj输出打包到nuget包中然后使用包管理器来安装该包来讨论。此外,您不应该需要框架上的导入,也不需要依赖netstandard.library,至少我不需要。以下是我的表现:

  • 创建一个.cmd文件,它将打包nuget文件,然后将输出文件复制到包管理器所期望的文件夹中。这是脚本,我称之为makeNuget.cmd:

    IF"%1" =="%2" (

    dotnet pack --no-build --configuration%1 -o ../% 3

    xcopy%4" ... \%3 \ lib \%5 \" / Y

  • 在xproj的project.json中添加postbuild脚本以运行脚本

    "脚本":{
    "后编译":[   " makeNuget.cmd%compile:Configuration%Release packages \%project:Name %% compile:OutputDir %% compile:TargetFramework%"
    ] }

这应该会在解决方案的根目录下的packages \ [projectName] \文件夹中留下一个nuget包,包中包含二进制文件\ [projectName] \ lib \ [targetFramwork] \ folder

  • 现在,您需要将packages文件夹添加为包源,因此首先打开包管理器控制台,然后单击小齿轮以添加包源(或Ctrl + Q,包源,Enter)。然后单击“添加”按钮,命名此源,浏览或键入packages目录并单击“确定”。 enter image description here
  • 在包管理器控制台中,确保在顶部的下拉菜单中选择了包源和项目。
  • install-package [您的包名]

AFAIK,现在和它一样好。

答案 1 :(得分:0)

你真的需要.Net Framework 4.6.2 app吗?

我刚刚创建了针对.NETStandard1.4的PCL(可移植类库),我可以在针对.NET Framework 4.6.1的WPF应用程序中使用它。 以下是我的project.json在PCL项目中的样子:

{
  "supports": {},
  "dependencies": {
    "Microsoft.NETCore.Portable.Compatibility": "1.0.1",
    "NETStandard.Library": "1.6.0"
  },
  "frameworks": {
    "netstandard1.4": {}
  }
}