【发布时间】:2014-12-06 04:02:23
【问题描述】:
我想为我的 ASP.NET vNext 类库创建一个 NuGet 包。我该怎么做,一步一步?我知道有kpm build,但我找不到关于在哪里下载 kpm 等的指南。
另外,在获得它的 NuGet 包(或 DLL)后,如何将其从本地计算机添加到我的 vNext 项目?
【问题讨论】:
标签: nuget-package asp.net-core dnx
我想为我的 ASP.NET vNext 类库创建一个 NuGet 包。我该怎么做,一步一步?我知道有kpm build,但我找不到关于在哪里下载 kpm 等的指南。
另外,在获得它的 NuGet 包(或 DLL)后,如何将其从本地计算机添加到我的 vNext 项目?
【问题讨论】:
标签: nuget-package asp.net-core dnx
Kpm 是新 KRuntime 的包管理器。可以在the aspnet Home repo 上找到有关如何在您的开发人员机器上安装 KRuntime 命令行实用程序的说明。设置好 kvm 和 KRuntime 版本后,您也可以使用 kpm。
现在您可以在您的类库项目位置运行kpm build。输出应该是这样的:
kpm build src\ClassLibrary1\
ClassLibrary1 -> C:\Users\username\Documents\Visual Studio 14\Projects\WebApplication1\src\ClassLibrary1\bin\Debug\ClassLibrary1.1.0.0.nupkg
ClassLibrary1 -> C:\Users\username\Documents\Visual Studio 14\Projects\WebApplication1\src\ClassLibrary1\bin\Debug\ClassLibrary1.1.0.0.symbols.nupkg
Build succeeded.
0 Warnings(s)
0 Error(s)
Time elapsed 00:00:01.7556414
添加对类项目的引用的最简单方法是在 project.json 中进行,假设您在同一个解决方案中拥有它。这是来自 Web 应用程序的示例 project.json,它引用了一个名为 ClassLibrary1 的类库。
{
"webroot" : "wwwroot",
"exclude": "wwwroot/**/*.*",
"dependencies": {
"Microsoft.AspNet.Server.IIS": "1.0.0-alpha4",
"ClassLibrary1": ""
},
"frameworks" : {
"aspnet50" : { },
"aspnetcore50" : { }
}
}
如果您想设置 NuGet 提要,您可以阅读 the official NuGet documentation to see how that is done. 将 kpm build 的输出复制到您的 NuGet 提要中。
注意:VS14 CTP4 仅适用于 KRuntime 的 alpha4。如果你想在 vNext 中使用 VS14 而不会弹出错误,你需要将你的 KRuntime 降级到 1.0.0-alpha4 版本。
【讨论】:
"mongocsharpdriver": "1.9.2",它位于project.json 中,并且在VS 中构建良好。但是,当我尝试使用kpm 构建时,它找不到这种依赖关系。不过,它并没有抱怨微软的依赖关系。有什么想法吗?
1.0.0-alpha4 CLR x86
如果您使用 Visual Studio 2015 RC 及更高版本:转到您的类库项目属性,打开 Build 选项卡并选中 Produce outputs on build 选项:
NuGet 包将在每个项目构建的{SolutionDir}\artifacts\bin\{ProjectName}\{Configuration} 目录中创建。
如果你使用命令行:
DNVM 和DNX(有关说明,请参阅ASP.NET Home repo)。dnu pack。默认会在{ProjectDir}\bin\{Configuration} 目录下创建 NuGet 包。要在同一解决方案的另一个项目中使用类库,请将其添加为 Visual Studio 中的常用项目引用或添加到 project.json 中的 dependencies 属性:
"dependencies": {
"ClassLibrary1": ""
}
要在其他解决方案中使用该库,请将 NuGet 包发布到 nuget.org 或任何其他 NuGet 源,并使用 Visual Studio (References ~> Manage NuGet Packages...) 或 @ 中的 dependencies 属性将其添加到您的项目中987654337@.
【讨论】:
没有足够的代表发表评论。
根据 2016 年 8 月 8 日发布的 migration docs 更新为Whyleee 的回答,作为 DNX 工具集一部分的工具已被 dotnet CLI 工具取代。
所以,dnu pack 变成了dotnet pack,并且默认在 bin/[Configuration] 目录下创建了 nuget 和 symbols 包。对于大多数命令,您几乎可以将 dnu 替换为 dotnet。
要在本地添加 nuget 包,请参阅answer。
【讨论】:
从 VS2019 开始,需要更新项目属性/Package 选项卡,并选择“Generate NuGet package on build”。
【讨论】: