【发布时间】:2015-09-04 11:39:28
【问题描述】:
我有一个使用多个非 DNX 类库的 ASP.Net 5 MVC 6 项目。这些库是通过 dnu wrap 包装的,所有作品都可以在 IIS Express 或自托管应用程序上找到。但是在 IIS 8 上显示错误
无法解析目标框架的以下依赖项 'DNX,版本 = v4.5.1': 我的项目列表
当前运行时目标框架:'DNX,Version=v4.5.1 (dnx451)' 版本:1.0.0-beta7-15532 类型:CLR 架构:x64 操作系统名称:Windows 操作系统版本:6.3.9600.0
如果我使用 dnx 4.6 也会出现同样的错误(我只是降级以查看它是否适用于 4.5.1)。
但是可以在以下位置找到这些库:approot\packages\ 具有正确的 nuget 包结构(dnu 发布打包它们)
那么如何帮助 IIS 找到我的库?
重现步骤:
使用 2 个项目创建解决方案:新的 ASP.Net MVC 应用程序和常用类库(非包)
通过 dnu wrap 包装类库
从 MVC 中引用类库
发布 Web 应用程序(如果从 Visual Studio 发布不起作用,请使用 dnu publish --runtime active)
在 IIS 中创建网站并将其指向已发布 Web 应用的 wwwroot 文件夹
更新: 原来问题不在于 IIS 本身,而在于 DNX。如果我发布网站然后通过 Microsoft.AspNet.Server.WebListener 运行它,我会得到同样的错误。看起来 dnu publish 无法与打包的项目一起正常工作。
但是,在运行 Windows 服务时情况并非如此。我有一个引用相同库的控制台应用程序(包),我使用 --no-source 发布它,然后通过 sc.exe 将其安装为 Windows 服务,一切都按预期工作。
【问题讨论】:
-
您是否有用于程序集
DNX4.5.1 版的DLL 副本? -
什么意思?我为 DNX 4.5.1 构建了所有 DLL,并且可以为任何 DNX 版本构建。它不是 3rd 方 DLL,它只是类库项目
标签: asp.net asp.net-mvc iis asp.net-core