gpt4 book ai didi

asp.net-core - 如何制作 .NET Core 类库并从 .NET 4.6 项目中引用它?

转载 作者:行者123 更新时间:2023-12-03 12:08:35 25 4
gpt4 key购买 nike

我想要:

  • 制作一个定义一些接口(interface)和简单的通用帮助类的类库。它将依赖于通用集合和 IQueryable<T>但没有第三方依赖项(好吧,JetBrains.Annotations)。
  • 能够从任何地方引用该类库(特别是 UWP、net46 和 ASP.Net Core RC2)
  • 理想情况下,始终使用 project.json 系统,尽管我准备在需要时牺牲它。
  • 将完成的库发布到 NuGet 源,然后在其他应用程序中使用它

  • 在 Visual Studio 2015.2 中创建我的类库项目时,我发现了 Class Library (.NET Core)模板,其中说明

    A project template for creating a class library as a NuGet package that can target any platform



    任何平台!太棒了......但我无法让它工作。经过一番折腾,我目前有以下 project.json (我现在可能已经完全破坏了它):

    {
    "title": "My Really Useful Class Library",
    "copyright": "Copyright © 2015-16 Tigra Astronomy, all rights reserved",
    "description": "Really neat stuff",
    "language": "en-GB",
    "version": "1.0.0-*",
    "dependencies": {
    "JetBrains.Annotations": "10.1.4",
    },
    "frameworks": {
    "netstandard1.5": {
    "imports": "dnxcore50",
    "dependencies": {
    "NETStandard.Library": "1.5.0-rc2-24027",
    "System.Linq.Expressions": "4.0.11-rc2-24027"
    }
    }
    "net46": {
    "frameworkAssemblies": {
    "System.Collections": "4.0.*"
    },
    "dependencies": {}
    }
    },
    "buildOptions": {
    "xmlDoc": true
    }
    }

    接下来我在同一个解决方案中创建了我的 .NET Framework 4.6 项目,并尝试引用类库。它让我可以添加引用,但我遇到了构建错误、未解析的符号、R# 不满意等。

    我想我做的不对(毫不奇怪,真的,因为我在黑暗中摸索)。

    我已经阅读了一些关于 TFM、框架和库的文档,但没有一个真正有意义。

    我真正需要在我的类库的 project.json 中添加什么? ,以便我可以从我的 .net framework 4.6 应用程序以及 UWP 和 ASP.NET Core RC2 应用程序中引用它?这真的是正确的方法还是我一开始就走错了路?

    最佳答案

    现在有两种创建 C# 项目的方法:xprojcsproj .假设我们使用 project.json对于他们两个,项目类型的工作方式仍然不同——对于 xproj , project.json包含构建项目所需的一切;对于 csproj ,它只包含 nuget 依赖项。

    也就是说,某些项目类型,如 UWP,由于需要比 xproj 更复杂的构建管道,因此无法使用 xproj 构建。/project.json支持。 (顺便说一句,这是回到 msbuild 的一个关键原因。)

    创建基于 .NET Standard 的类库还有两种方法:可以使用 xprojproject.json ,正如你所做的那样,或者你可以创建一个常规的 csproj “可移植类库”项目。使用 VS 2015 Update 3 RC,您可以更改 PCL 以针对 .NET 标准版本(netstandard1.x 而不是 PCL 配置文件、259 等)。

    如果您使用 csproj基于类库的目标 netstandard1.x ,在添加项目引用时,事情应该对你有用。请注意,UWP 目前最多支持 netstandard1.4基于platform map .挑战在于您是否想使用 xproj/project.json而是基于项目。使用 xproj 的一个关键原因今天的目标是实现多个目标框架之间的交叉编译。也就是说,从您的项目中创建多个输出。这与创建可以从任何兼容项目引用的单个输出不同。两者都有其用途,这取决于您的需求。

    如果您决定创建 xproj -based 类库,如果“添加引用”对话框不起作用(它不是 csproj -> xproj,则可以使用一种解决方法从 UWP 项目或任何其他兼容的项目类型中引用它几乎坏了)。不要使用对话框,而是编辑您的 UWP csproj指向 xproj 的输出像这样:

    <Reference Include="System.Reactive.Interfaces">
    <HintPath>..\System.Reactive.Interfaces\bin\$(Configuration)\netstandard1.0\System.Reactive.Interfaces.dll</HintPath>
    </Reference>

    上面的代码片段取自 Rx.NET UWP Test Runner here

    如果这样做,您还需要将 UWP 项目中的构建依赖项添加到 xproj,因为 MSBuild/Visual Studio 不会知道它并以错误的顺序构建事物。为此,请在解决方案资源管理器中右键单击您的 UWP 项目,然后选择“构建依赖项 -> 项目依赖项”。在该对话框中,选中 xproj 的复选框,以确保 VS/MSbuild 知道首先构建那个。

    您可以在此处查看完整的 Rx.NET 解决方案,其中包括 xproj->xproj引用资料和 UWP -> xproj我上面提到的引用资料。

    关于asp.net-core - 如何制作 .NET Core 类库并从 .NET 4.6 项目中引用它?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37902451/

    25 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com