- r - 以节省内存的方式增长 data.frame
- ruby-on-rails - ruby/ruby on rails 内存泄漏检测
- android - 无法解析导入android.support.v7.app
- UNIX 域套接字与共享内存(映射文件)
我正在尝试运行 HelloWeb sample 的修改版本用于使用 Kestrel 的 DNX 上的 ASP.NET vNext。我知道这在很大程度上处于最前沿,但我希望 ASP.NET 团队至少能保持最简单的 Web 应用程序正常工作:)
环境:
Startup.cs
中:
using Microsoft.AspNet.Builder;
public class Startup
{
public void Configure(IApplicationBuilder app)
{
app.UseWelcomePage();
}
}
project.json
:
{
"dependencies": {
"Kestrel": "1.0.0-beta4",
"Microsoft.AspNet.Diagnostics": "1.0.0-beta4",
"Microsoft.AspNet.Hosting": "1.0.0-beta4",
"Microsoft.AspNet.Server.WebListener": "1.0.0-beta4",
"Microsoft.AspNet.StaticFiles": "1.0.0-beta4",
"Microsoft.Framework.Runtime": "1.0.0-beta4",
"Microsoft.Framework.Runtime.Common": "1.0.0-beta4",
"Microsoft.Framework.Runtime.Loader": "1.0.0-beta4",
"Microsoft.Framework.Runtime.Interfaces": "1.0.0-beta4",
},
"commands": {
"kestrel": "Microsoft.AspNet.Hosting --server Kestrel --server.urls http://localhost:5004"
},
"frameworks": {
"dnx451": {}
}
}
kpm restore
似乎工作正常。
Microsoft.Framework.Runtime.IApplicationEnvironment
找不到。命令行和错误(有点重新格式化)
.../HelloWeb$ dnx . kestrel
System.IO.FileNotFoundException: Could not load file or assembly
'Microsoft.Framework.Runtime.IApplicationEnvironment,
Version=0.0.0.0, Culture=neutral, PublicKeyToken=null'
or one of its dependencies.
File name: 'Microsoft.Framework.Runtime.IApplicationEnvironment,
Version=0.0.0.0, Culture=neutral, PublicKeyToken=null'
at (wrapper managed-to-native) System.Reflection.MonoMethod:InternalInvoke
(System.Reflection.MonoMethod,object,object[],System.Exception&)
at System.Reflection.MonoMethod.Invoke
(System.Object obj, BindingFlags invokeAttr, System.Reflection.Binder binder,
System.Object[] parameters, System.Globalization.CultureInfo culture)
[0x00000] in <filename unknown>:0
Microsoft.Framework.Runtime.IApplicationEnvironment
在
Microsoft.Framework.Runtime.Interfaces
assembly source ,而且最近似乎没有改变。不清楚为什么异常显示名称好像它本身就是一个完整的程序集,而不仅仅是另一个程序集中的接口(interface)。我猜这可能是由于
assembly neutral interfaces ,但从错误中并不清楚。 (
[AssemblyNeutral]
is dead, so that's not it... )
最佳答案
好问题。对于您的特定问题,您解决的依赖项似乎不匹配。当发生这样的事情时,很可能是因为您在不兼容的 dnx 上运行您的应用程序。我们仍在进行非常大的突破性更改,因此如果您看到缺少类型的方法,您很可能最终会运行 betaX
包和 betaY
dnx,反之亦然。
更具体地说,Assembly Neutral Interfaces已在 beta4 中删除,但看起来您正在运行的应用程序仍在使用它们。
我们计划这样做,以便程序包可以标记它们运行所需的最小 dnx,以使错误消息更加清晰。此外,随着时间的推移,重大变化将逐渐消失。
但总的来说,我觉得是时候写一篇关于如何在使用 dnx 时诊断此类问题的指南了(因为它与现有的 .NET 非常不同)。
您放入的依赖项 project.json
只是顶级。版本也是总是最小值 (它就像一个 NuGet 包)。这意味着当您指定 Foo 1.0.0-beta4
时你真的在指定 Foo >= 1.0.0-beta4
.这意味着如果您要求 MVC 0.0.1
并且您配置的提要的最低版本是 MVC 3.0.0
,你会得到那个。我们也永远不会 float 您的版本,除非您指定它。如果您要求 1.0.0 并且它存在,即使存在较新的版本,您也会得到 1.0.0。指定空版本总是不好的,在以后的版本中将被禁止。
我们向 nuget 引入了一项新功能,称为 float 版本。今天它只适用于预发布标签,但在下一个版本中它将适用于版本的更多部分。这类似于 npm 和 gem 语法,用于在包规范文件中指定版本范围。1.0.0-*
- 意味着给我匹配前缀的最高版本(根据 semantic versioning rules )或者如果没有匹配该前缀的版本,使用正常行为并获取最低版本>=指定版本。
当您在最新版本中运行 restore 时,它会写出一个名为 project.lock.json
的文件。 .该文件将具有 project.json
中定义的所有目标框架的依赖关系的传递闭包。 .
当这样的事情失败时,您可以执行以下操作:
使用 kpm list
查看解析的依赖项.这将向您显示项目引用的包的已解析版本以及将其引入的依赖项。例如如果 A -> B,它会显示:
A -> BB ->
Actual KPM list output:
Listing dependencies for ClassLibrary39 (C:\Users\davifowl\Documents\Visual Studio 14\Projects\ClassLibrary39\src\ClassLibrary39\project.json)
[Target framework DNX,Version=v4.5.1 (dnx451)]
framework/Microsoft.CSharp 4.0.0.0
-> ClassLibrary39 1.0.0
framework/mscorlib 4.0.0.0
-> ClassLibrary39 1.0.0
framework/System 4.0.0.0
-> ClassLibrary39 1.0.0
framework/System.Core 4.0.0.0
-> ClassLibrary39 1.0.0
*Newtonsoft.Json 6.0.1
-> ClassLibrary39 1.0.0
[Target framework DNXCore,Version=v5.0 (dnxcore50)]
*Newtonsoft.Json 6.0.1
-> ClassLibrary39 1.0.0
System.Runtime 4.0.20-beta-22709
-> ClassLibrary39 1.0.0
{
"version": "1.0.0-*",
"dependencies": {
"Newtonsoft.Json": "8.0.0"
},
"frameworks" : {
"dnx451" : {
"dependencies": {
}
},
"dnxcore50" : {
"dependencies": {
"System.Runtime": "4.0.20-beta-22709"
}
}
}
}
Newtonsoft.Json 8.0.0
不存在。所以运行 kpm restore 显示以下内容:
CACHE
要求。这是基于资源类型(nupkg 或 nuspec)的内置缓存,并具有可配置的 TTL(查看
kpm restore --help
)。如果要强制
kpm
要访问远程 NuGet 源,请使用
--no-cache
标志:
%appdata%\NuGet\NuGet.Config
中全局配置了默认的 NuGet.org 源。 .您可以在 Visual Studio 中或使用 NuGet 命令行工具管理这些全局源。在尝试诊断故障时,您应该始终查看有效来源(kpm 输出中列出的来源)。
> dnx . run
System.InvalidOperationException: Failed to resolve the following dependencies for target framework 'DNX,Version=v4.5.1':
Newtonsoft.Json 8.0.0
Searched Locations:
C:\Users\davifowl\Documents\Visual Studio 14\Projects\ClassLibrary39\src\{name}\project.json
C:\Users\davifowl\Documents\Visual Studio 14\Projects\ClassLibrary39\test\{name}\project.json
C:\Users\davifowl\.dnx\packages\{name}\{version}\{name}.nuspec
C:\Program Files (x86)\Reference Assemblies\Microsoft\Framework\.NETFramework\v4.5.1\{name}.dll
C:\Program Files (x86)\Reference Assemblies\Microsoft\Framework\.NETFramework\v4.5.1\Facades\{name}.dll
C:\WINDOWS\Microsoft.NET\assembly\GAC_32\{name}\{version}\{name}.dll
C:\WINDOWS\Microsoft.NET\assembly\GAC_64\{name}\{version}\{name}.dll
C:\WINDOWS\Microsoft.NET\assembly\GAC_MSIL\{name}\{version}\{name}.dll
Try running 'kpm restore'.
at Microsoft.Framework.Runtime.DefaultHost.GetEntryPoint(String applicationName)
at Microsoft.Framework.ApplicationHost.Program.ExecuteMain(DefaultHost host, String applicationName, String[] args)
at Microsoft.Framework.ApplicationHost.Program.Main(String[] args)
kpm restore
这是因为它找不到列出的依赖项。
dnx4x - runs on dnx-clr-{etc}
dnxcore50 - runs on dnx-coreclr-{etc}
project.json
中定义的从 clr 到目标框架的心理映射。 .
> kpm build
Building ClassLibrary39 for DNX,Version=v4.5.1
Using Project dependency ClassLibrary39 1.0.0
Source: C:\Users\davifowl\Documents\Visual Studio 14\Projects\ClassLibrary39\src\ClassLibrary39\project.json
Using Assembly dependency framework/mscorlib 4.0.0.0
Source: C:\Program Files (x86)\Reference Assemblies\Microsoft\Framework\.NETFramework\v4.5.1\mscorlib.dll
Using Assembly dependency framework/System 4.0.0.0
Source: C:\Program Files (x86)\Reference Assemblies\Microsoft\Framework\.NETFramework\v4.5.1\System.dll
Using Assembly dependency framework/System.Core 4.0.0.0
Source: C:\Program Files (x86)\Reference Assemblies\Microsoft\Framework\.NETFramework\v4.5.1\System.Core.dll
Using Assembly dependency framework/Microsoft.CSharp 4.0.0.0
Source: C:\Program Files (x86)\Reference Assemblies\Microsoft\Framework\.NETFramework\v4.5.1\Microsoft.CSharp.dll
Building ClassLibrary39 for DNXCore,Version=v5.0
Using Project dependency ClassLibrary39 1.0.0
Source: C:\Users\davifowl\Documents\Visual Studio 14\Projects\ClassLibrary39\src\ClassLibrary39\project.json
Using Package dependency System.Console 4.0.0-beta-22709
Source: C:\Users\davifowl\.dnx\packages\System.Console\4.0.0-beta-22709
File: lib\contract\System.Console.dll
Using Package dependency System.IO 4.0.10-beta-22231
Source: C:\Users\davifowl\.dnx\packages\System.IO\4.0.10-beta-22231
File: lib\contract\System.IO.dll
Using Package dependency System.Runtime 4.0.20-beta-22231
Source: C:\Users\davifowl\.dnx\packages\System.Runtime\4.0.20-beta-22231
File: lib\contract\System.Runtime.dll
Using Package dependency System.Text.Encoding 4.0.10-beta-22231
Source: C:\Users\davifowl\.dnx\packages\System.Text.Encoding\4.0.10-beta-22231
File: lib\contract\System.Text.Encoding.dll
Using Package dependency System.Threading.Tasks 4.0.10-beta-22231
Source: C:\Users\davifowl\.dnx\packages\System.Threading.Tasks\4.0.10-beta-22231
File: lib\contract\System.Threading.Tasks.dll
{
"version": "1.0.0-*",
"dependencies": {
"Microsoft.Owin.Host.SystemWeb": "3.0.0"
},
"frameworks": {
"dnx451": {
"dependencies": {
}
},
"dnxcore50": {
"dependencies": {
"System.Console": "4.0.0-beta-22709"
}
}
}
}
kpm build
:
关于c# - 如何诊断 dnx 中缺少的依赖项(或其他加载程序故障)?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29007962/
我想删除所有测试版的 clr 和 coreclr 我在程序和功能中看不到它们。 我正在运行 Windows 7 我删除了 %USERPROFILE%.dnx\packages 中的所有文件 但是当我跑
我在 VS2015 中启动了一个非常简单的“尝试一下”ASP.Net MVC(测试版)项目,但我在 DNX 和 DNX Core 引用资料上遇到了一个问题。 在此示例中,我尝试使用 DateTime.
当我在我的 Visual Studio 中打开一个 (dnx46) 项目时,我(大多数情况下)收到以下错误: The following error occurred attempting to ru
我在类库中使用 DNX 实现 log4net 时遇到问题。我的 project.json 中有以下内容 - ... "dependencies": { "log4net": "2.0.
我在 Ubuntu 14.04(在我的 VMWare 上)上使用 Visual Studio Code 创建了一个简单的 WEB API 应用程序。我完成了安装和配置 .NET 核心、VS 代码 (V
在我和其他人的许多项目中,如果我使用的对象属于不同的 asp.net5 项目,就会弹出一个不明确的引用错误。有趣的是,它仍然可以编译和工作,但没有智能感知,我的代码被红线覆盖。 这方面的一个例子是我有
我已在包管理器控制台中运行此命令来升级 dnx。 "dnvm upgrade -u default" 一旦它得到更新,我可以看到(C:\Users\Chandrasekar.dnx\runtimes)
我克隆了一个基于 ASP.NET 5 Mvc 6 Beta 8 的存储库。Visual Studio 无法安装最新的 DNX SDK。 这是错误信息:“DNX SDK 版本‘dnx-clr-win-x
当我尝试在本地打开 .Net core RC2 迁移项目时,收到以下错误消息 --------------------------- Microsoft Visual Studio ---------
我已经安装了 Visual Studio 2015 Update 1。然而,尽管选择了安装 Web 应用程序,但它并没有安装。然后我从get.asp.net安装了网站安装程序 asp.net 5 RC
我试图在我的 Arch Linux 系统上安装 .NET 核心。我遵循了这个简单的教程:http://dotnet.github.io/core/getting-started/但是当我尝试执行命令
我有一个项目存在于名为Oracle的目录中,我希望创建的 Artifact 称为MyCompany.MyApp.Oracle而不是Oracle,除了更改目录名之外,更改输出程序集名称和nuget包名称
(现在提高为 DNX issue 3206 ...) DNX 环境:1.0.0-rc1,Windows 10 x64。 想象一下,我有三个解决方案: 申请1 申请2 普通 这些解决方案中的每一个都有多
更新:DNX 不再存在。请忽略这个问题。 当前的 WindowsAzure.ServiceBus (3.0.4) nuget 包 ( http://nuget-preprod-0-v2gallery.
我想将我的框架移植到新的 .net 核心,所以我创建了一个空应用程序,添加了一个静态成员来感受行为,每个请求增加一个 int,但它运行了两次,一次是请求和请求之后一次,所以不是得到 1,2,3,4..
我真的对新的 Dot Net Execution SDK 和新的跨平台 .net 应用程序/库的共享库形式感到困惑。 我有一些可移植类库,我计划在 Mono 环境下使用它们(将来可能会使用 xamar
我有一个引用类库项目的 DNX 控制台应用程序。我正在尝试发布它并将其安装为全局命令。 我在 Windows 10 操作系统上执行此操作。 控制台项目 Program.cs namespace Ver
目标 对于集成测试,我想加载自定义 XML 配置。此 XML 位于我的集成测试项目中的一个文件夹中。 对于进一步的目标,我想使用新的 DNX 项目。我知道它们仍在预览中。 本地测试工作正常。现在的问题
当我发布我的项目时 dotnet publish 它输出到一个文件夹 bin/Debug/dnxcore50/osx.10.11-x64/publish (或者可能是 Release 等价物) 是否可
我在使用 dnx/k 版本 1.0.0-beta3 设置的 ASP.NET 5 项目工作。最近我对操作系统和 VS 进行了全新安装,但丢失了 beta3 软件包,我只安装了 beta4。是否可以安装特
我是一名优秀的程序员,十分优秀!