asp.net 核心 2.0 发布生成大量 DLL

asp.net core 2.0 publish generating lots of DLL's

一个应用程序的编程几个月,每次我发布我的项目时,都会生成 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.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 创建了新项目并移动了所有源文件。解决一些错误后一切正常。

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

在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 了解到默认是使用最新安装的版本。

Starting with .NET Core 2.0, the following rules apply when determining which version of the SDK to use:

  • If no global.json file is found or global.json doesn't specify an SDK version, the latest installed SDK version is used. Latest SDK version can be either release or pre-release - the highest version number wins. (emphasis added)

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

dotnet new globaljson --sdk-version 2.1.100

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

这是由 .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