2

我想为包装标准 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 包?

4

2 回答 2

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 并依赖于 System.Linq.Expressions 命名空间的类库项目的示例 project.json 文件:

{
    "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": {}
    }
}
于 2016-06-29T13:17:20.433 回答
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

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

于 2017-04-19T13:54:48.553 回答