【问题标题】:asp.net core 2.0 publish generating lots off DLLasp.net core 2.0 发布生成大量 DLL
【发布时间】:2019-01-01 07:03:29
【问题描述】:

几个月来编写一个应用程序,每次我发布我的项目时,它都会生成 19 个项目(没有 wwwroot 文件)。从今天开始,它会生成 202 个包含大量 .dll 的文件(没有 wwwroot 文件)。我不知道发生了什么或我做了什么。我的应用程序使用 .NET Core 2.0。我不知道关于我的项目的哪些信息是相关的。大约 81/202 个文件只是 Microsoft.AspNetCore 库,43/202 个文件只是 Microsoft.Extensions 库。我尝试删除了 obj、bin、properties 和 node_modules,但仍然是同样的问题。仅上传之前从大量文件生成的文件后,一切正常。我认为它没有必要 .dll 但我不知道为什么 asp.net 仍然生成它们。谢谢你的任何建议。

编辑:

这是一个发布输出、依赖项和发布输出的大屏幕截图,该截图是根据评论此问题的用户之一的请求添加的:

编辑:

将发布属性从自包含部署更改为依赖框架的部署后出现新错误,并且我从输出中收到新错误:

C:\Program Files\dotnet\sdk\2.1.400-preview-009063\Sdks\Microsoft.NET.Sdk\targets\Microsoft.NET.RuntimeIdentifierInference.targets(125,5): Error NETSDK1068: The framework-dependent application host requires a target framework of at least 'netcoreapp2.1'.

编辑:

现在我尝试创建新项目 asp.net core 2.0 并尝试发布。同样的问题。我的 sdk 有问题或者我不知道。

解决方案:

我使用目标 2.1 创建了新项目并移动了所有源文件。解决几个错误后一切正常。

【问题讨论】:

  • 您能否展示您的参考资料以及可能的输出截图?
  • 我在原帖中添加了它。感谢您的请求。
  • @ph0en1x 的回答对您的问题没有帮助吗?
  • 没有帮助,但我得到了新的错误。
  • 您的最后一个错误是由不兼容的项目类型引起的。您安装了最新的 Microsoft sdk 和运行时,它们希望您至少拥有 netcoreapp2.1,在您的情况下,您的初始项目是 2.0

标签: c# dll asp.net-core visual-studio-2017 publishing


【解决方案1】:

我很确定您只需为 self-contained deployment 选择发布模式,因此大多数文件只是运行隔离运行时所需的库。要再次返回几个文件,只需继续进行依赖于框架的部署(描述相同的文档)

【讨论】:

  • 我之前发现了那个文档,我也有同样的想法,但是在检查了我的发布属性的配置之后,它表明我有依赖于框架的部署,所以我忽略了这一点。但现在可以确定我再次单击保存并发布项目,我收到此错误:C:\Program Files\dotnet\sdk\2.1.400-preview-009063\Sdks\Microsoft.NET.Sdk\targets\Microsoft.NET.RuntimeIdentifierInference .targets(125,5):错误 NETSDK1068:依赖于框架的应用程序主机需要至少为“netcoreapp2.1”的目标框架。
【解决方案2】:

在 Visual Studio 15.8.2 上,我也遇到了这个问题。不幸的是,我不能简单地升级应用程序,因为我们对内部管理的部署服务器有运行时版本限制。因此,即使我可以在最新的 SDK 版本 (2.1.401) 上构建,但应用程序部署的位置具有较旧的 SDK 版本 (2.1.100)。

.NET Core 2.0 的 SDK 和运行时版本相关性可以在 here 找到。

我的问题就这样表现出来了:构建和重建成功,但是发布失败,错误消息Error NETSDK1068: The framework-dependent application host requires a target framework of at least 'netcoreapp2.1'. 我从here 了解到默认是使用最新安装的版本。

从 .NET Core 2.0 开始,在确定使用哪个版本的 SDK 时适用以下规则:

  • 如果未找到 global.json 文件或 global.json 未指定 SDK 版本,则使用最新安装的 SDK 版本。最新的 SDK 版本可以是发布版或预发布版 - 最高版本号获胜。 (强调)

在同一篇文章中,我学会了使用global.json 文件来解决这个错误。我使用 git-bash 和 cd'd 到我试图发布的 Web 应用程序的本地工作目录。对应的csproj文件应该在这个目录下。从这里我运行了以下内容:

dotnet new globaljson --sdk-version 2.1.100

现在我可以使用以下发布配置设置: - 配置:发布 - 目标框架:netcoreapp2.0 - 部署模式:依赖框架 - 目标运行时:便携

【讨论】:

    【解决方案3】:

    这是由 .NET Core SDK 版本 2.1.400 中引入的错误引起的。见Framework Dependent Publish doesn't work on 2.1.400 #9852

    有一种解决方法 - 通过命令行发布并传递 arg --self-contained false

    例子:

    dotnet publish -f netcoreapp2.0 -c Release --self-contained false

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2019-02-17
      • 1970-01-01
      • 2018-02-28
      • 2018-03-15
      • 2020-03-05
      • 1970-01-01
      • 2018-10-26
      • 2019-02-19
      相关资源
      最近更新 更多