DotNet Pack 啥都不做

Posted

技术标签:

【中文标题】DotNet Pack 啥都不做【英文标题】:DotNet Pack Not Doing AnythingDotNet Pack 什么都不做 【发布时间】:2018-02-13 21:25:27 【问题描述】:

我正在尝试为我的 Web 应用程序创建一个 nuget 包,但它没有产生任何 .nupkg 输出。我正在使用 Visual Studio 2017 15.3.0。

要创建项目,我执行以下操作:

文件 - 新建 - 项目, Visual C# - Web, Asp.Net Core Web 应用程序, Web 应用程序

然后我转到包含 csproj 文件的目录中的命令提示符并键入: “点网包”

我只得到以下输出:

适用于 .NET Core 的 Microsoft (R) Build Engine 版本 15.3.409.57025 版权所有 (C) 微软公司。保留所有权利。

但是没有创建任何 nuget 包。我期待这样的事情:

为应用制作 Nuget 包“App.1.0.0”

我是否需要对 csproj 文件执行其他操作?

【问题讨论】:

所以您希望从网站创建一个 nuget 包?不是说它是对是错,但你对这个包有什么期望? 这样我就可以在 TeamCity 中生成一个可以由 Octopus Deploy 部署的 Nuget 包。如果有更好的方法,请纠正我。 Octopus Deploy 建议使用dotnet publish 生成已发布的输出,然后在该输出上使用octo pack。请咨询its documentation。 我的情况与想从 vsts 构建部署到托管 openshift 平台的情况相同。托管平台希望选择 Docker 运行时,以便十几个团队不必更改其 Docker 文件以获取安全补丁。没有办法将 asp.net 核心网站部署为一个包,这意味着我需要发送 zip 文件 【参考方案1】:

默认情况下,Web 应用程序不可打包。要更改此设置,请修改您的 csproj 文件以包含此属性:

<PropertyGroup>
  <IsPackable>true</IsPackable>
</PropertyGroup>

请注意,截至目前(2017 年),对于适用于您希望使用 NuGet 包的所有场景的“库 Web 项目”或 Web 项目包来说,没有一个好故事。但是这个属性至少会解除对生成包的阻碍。

【讨论】:

感谢您的回答。我不明白你的评论。我这样做是为了在 TeamCity 中生成一个可以由 Octopus Deploy 部署的 Nuget 包。如果有更好的通过 TeamCity 从 Octopus 部署的方法,请纠正我。 octopus.com/docs/guides/deploying-asp.net-core-web-applications 考虑使用dotnet publish 的输出来发布应用以获得正确的布局。 这也适用于 VS 认为是测试项目的项目。 同样适用于 Worker 项目 (&lt;Project Sdk="Microsoft.NET.Sdk.Worker"&gt;)

以上是关于DotNet Pack 啥都不做的主要内容,如果未能解决你的问题,请参考以下文章

dotnet pack 不适用于 Azure Function(Pack Azure Functions for Nuget)

使用“dotnet pack”时“PackageVersion”无效

拯救错误啥都不做?

UIViewController presentModalViewController:动画:啥都不做?

iOS UITapGestureRecognizer 啥都不做?

NSWindowController showWindow:nil 啥都不做