如何为标准框架和.Net Core创建nuget包(dll)?

时间:2016-06-02 16:29:47

标签: c# nuget-package asp.net-core-1.0 .net-core-rc2 dnx50

我想为包装标准Sql Client类的Sql Server创建数据小数据访问库,并将其发布到NuGet。我想在标准和.Net核心应用程序中使用这个NuGet包。

我创建了带有一些数据访问代码的类库项目(它使用System,System.Core和System.Data)并将其发布到nugget。我已将System,System.Core和System.Data添加为NuGet框架依赖项。

UPDATE - described problems both in RC1 and RC2

在RC1版本中,它适用于4.6框架,但我必须从package.json中删除DNX 5.

在RC2版本中,它适用于ASPNET Core(.Net Framework)项目,但是当我创建ASPNET Core(.Net Core)时,编译失败:

错误NU1002依赖项不支持框架.NETCoreApp,Version = v1.0。

有没有办法创建适用于这两个版本的nugget包?

2 个答案:

答案 0 :(得分:1)

由于.NET Core 1.0本周刚刚发布,我将在最新版本的框架中回答这个问题。

如果您尝试同时定位ASP.NET Core 1.0和.NET 4.5,则必须单独定义两个框架,包括每个框架构建所需的所有依赖项。

以下是针对.NET Core Standard 1.5,ASP.NET Core 1.0,.NET 4.5和.NET 4.0的类库项目的示例project.json文件,并且依赖于System.Linq.Expressions命名空间:

{
    "version": "1.0.0-*",

    "frameworks": {
        "netstandard1.5": {
            "imports": "dnxcore50",
            "dependencies": {
                "NETStandard.Library": "1.6.0",
                "System.Linq.Expressions": "4.1.0"
            }
        },
        "netcoreapp1.0": {
            "imports": "dnxcore50",
            "dependencies": {
                "Microsoft.NETCore.App": {
                    "type": "platform",
                    "version": "1.0.0"  
                },
                "System.Linq.Expressions": "4.1.0"
            }
        },
        "net45": {
            "frameworkAssemblies": {
                "System.Linq.Expressions": ""
            }
        },
        "net40": {}
    }
}

答案 1 :(得分:0)

使用Visual Studio 2017,您可以创建.NET Standard项目库。您可以在项目属性中选择版本。

这样的项目如下:

<Project Sdk="Microsoft.NET.Sdk">
  <PropertyGroup>
    <TargetFramework>netstandard1.4</TargetFramework>
    <AssemblyName>MyAssembly</AssemblyName>
    <PackageId>MyPackage</PackageId>
    <GenerateAssemblyConfigurationAttribute>false</GenerateAssemblyConfigurationAttribute>
    <GenerateAssemblyCompanyAttribute>false</GenerateAssemblyCompanyAttribute>
    <GenerateAssemblyProductAttribute>false</GenerateAssemblyProductAttribute>
    <Copyright>Copyright</Copyright>
    <Description>Simple Library</Description>
    <Authors>Me</Authors>
    <AssemblyVersion>1.1.0</AssemblyVersion>
    <FileVersion>1.1.0</FileVersion>
    <Version>1.1.0</Version>
    <Company>MyCompany</Company>
  </PropertyGroup>
  <ItemGroup>
    <Folder Include="Properties\" />
  </ItemGroup>
</Project>

在IDE中,右键单击菜单上有pack命令,或者您可以输入:

msbuild /t:pack myproject.csproj

只有一个包......统治他们所有人......:)