ASP.Net 5 IIS:无法解析以下依赖项

Vit*_*aly 5 asp.net iis asp.net-mvc asp.net-core

我有一个ASP.Net 5 MVC 6项目,它使用了几个非DNX类库.这些库通过dnu包装包装,所有工作都可以在IIS Express或自托管应用程序上找到.但是在IIS 8上显示错误

无法解决目标框架'DNX,Version = 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),同样的错误.

然而,libs可以在以下位置找到:approot\packages \具有正确的nuget包结构(dnu发布打包它们)

那么如何帮助IIS找到我的库?

重现步骤:

  1. 用2个项目创建解决方案:新的ASP.Net MVC应用程序和通常的类库(不是包)

  2. 通过dnu换行包装类库

  3. 来自MVC的引用类库

  4. 发布Web应用程序(如果从Visual Studio发布不起作用,请使用dnu publish --runtime active)

  5. 在IIS中创建网站并将其指向已发布的Web应用程序的wwwroot文件夹

更新: 原来问题不是在IIS本身,而是在DNX中.如果我发布网站然后通过Microsoft.AspNet.Server.WebListener运行它,我会得到同样的错误.看起来dnu发布与包装项目无法正常工作.

但是,运行Windows服务时不是这种情况.我有一个引用相同库的控制台应用程序(包),我用--no-source发布它,然后通过sc.exe将它安装为windows服务,它都按预期工作.

Vit*_*aly 3

我的问题是,在 project.json 中,我引用了没有库版本的引用,只有一个空字符串。它可以在 Visual Studio 下运行,但在没有 VS 的情况下运行则无法运行。我有这样的引用,因为在 RC 中我无法添加引用 vie 上下文菜单,所以我手动添加它并且它起作用了。以下是如何设置网站在 IIS 下运行的步骤:

1) 使用“dnu wrap”命令包装非 DNX 项目

2) 将 DNX 项目的引用添加到非 DNX 项目,并检查project.json 中的版本是否正确(应与wrap\yourproject\project.json 中的版本相同)。这是一个例子:

"frameworks": {
    "dnx46": {
        "dependencies": {
            "MyLib": "1.0.0-*"                
        }
}
Run Code Online (Sandbox Code Playgroud)

3) 使用 dnupublish 发布您的网站

dnu publish .\src\Web --out <outputfolder>
Run Code Online (Sandbox Code Playgroud)

4) 使用运行时参数再次发布。这次运行时被复制到输出文件夹。但这次没有创建 wwwroot 文件夹,好在我们已经在步骤 3 中运行了发布;-)。您可以更改步骤 3 和 4 的顺序

dnu publish .\src\Web --out <outputfolder> --runtime dnx-clr-win-x64.1.0.0-beta7

5) 转至outputfolder\wwwroot\web.configappsettings 并键入 2 个参数的值:dnx-version 和 dnx-clr。这是示例:

<appSettings>
  <add key="bootstrapper-version" value="1.0.0-beta7" />
  <add key="runtime-path" value="..\approot\runtimes" />
  <add key="dnx-version" value="1.0.0-beta7" />
  <add key="dnx-clr" value="clr" />
  <add key="dnx-app-base" value="..\approot\src\Web" />
</appSettings>
Run Code Online (Sandbox Code Playgroud)

6) 在 IIS 中创建新网站,选择运行时为 .Net v4.0 的应用程序池

7) 将您的新网站指向outputfolder\wwwroot 文件夹

8) 检查一切是否正常