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

时间:2018-07-24 15:20:56

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

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

编辑:

以下是其中一个评论此问题的用户的请求添加的发布输出,依赖项和发布输出的大屏幕截图: enter image description here

编辑:

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

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创建了一个新项目,并移动了所有源文件。解决了几个错误后,一切正常。

3 个答案:

答案 0 :(得分:4)

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

有一种解决方法-通过命令行发布并传递arg static void method2() { String sql = "select * from Customers"; try (ClosableResultSet rs = Factory.createResultSet( sql, (e, action) -> System.out.print(action + ": " + e.getMessage()) )) { while (rs.next()) { System.out.print("Name: " + rs.getString("name") + "\n"); } } catch (SQLException e) { e.printStackTrace(); } }

示例:

--self-contained false

答案 1 :(得分:3)

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

答案 2 :(得分:3)

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

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

我的问题由此显现出来:构建和重建成功,但是发布失败,并显示错误消息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移到了我要发布的Web应用程序的本地工作目录中。相应的csproj文件应位于此目录中。从这里我运行以下内容:

dotnet new globaljson --sdk-version 2.1.100

现在,我可以使用以下发布配置设置: -配置:发布 -目标框架:netcoreapp2.0 -部署模式:框架相关 -目标运行时:可移植