我有一个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找到我的库?
重现步骤:
用2个项目创建解决方案:新的ASP.Net MVC应用程序和通常的类库(不是包)
通过dnu换行包装类库
来自MVC的引用类库
发布Web应用程序(如果从Visual Studio发布不起作用,请使用dnu publish --runtime active)
在IIS中创建网站并将其指向已发布的Web应用程序的wwwroot文件夹
更新: 原来问题不是在IIS本身,而是在DNX中.如果我发布网站然后通过Microsoft.AspNet.Server.WebListener运行它,我会得到同样的错误.看起来dnu发布与包装项目无法正常工作.
但是,运行Windows服务时不是这种情况.我有一个引用相同库的控制台应用程序(包),我用--no-source发布它,然后通过sc.exe将它安装为windows服务,它都按预期工作.
我有一个使用ngDialog的服务(这是该服务的唯一目的 - 显示常见的对话框:警报,确认等).ngDialog要求将范围对象作为参数传递给插值对话框的模板.所以我需要创建一个范围,分配它的属性并传递给ngDialog.open.问题是我无法将$ rootScope(或$ scope)注入服务和范围.$ new是我找到创建空范围的唯一方法.当我像这样注入$ rootScope
myService.$inject = ['$rootScope', 'ngDialog'];
Run Code Online (Sandbox Code Playgroud)
我收到错误:未知的提供程序:$ rootScope Provider < - $ rootScope < - myService但是,如果我只使用快捷方式合并来判断依赖关系,这是有效的:
function myService($ rootScope,ngDialog){
// $ rootScope这里是可访问的
}
但这种方法不是缩小安全的.所以问题是:如何在服务中创建新范围?
更新 这里是jsfiddle,显示了我在项目中的结构.从指令调用服务时发生错误,现在问题消失了. 的jsfiddle