如何移植现有的ASP.NET MVC网站以使用DNX构建以使其跨平台?
理想情况下,我希望能够使用VSCode构建它
我有一个新的ASP.NET 5项目,并设置project.json如下;
"frameworks": {
"dnx451": {
"dependencies": {
"ExternalLibrary": "1.3.0" }
},
"dnxcore50": {}
}
Run Code Online (Sandbox Code Playgroud)
我正在通过Kestrel运行项目,使用project.json中定义的默认命令.
"kestrel": "Microsoft.AspNet.Hosting --server Kestrel --server.urls http://localhost:5001"
Run Code Online (Sandbox Code Playgroud)
一切正常.项目运行并且依赖项运行良好.我唯一不明白谁决定使用哪个底层框架?
据我所知,如果Kestrel使用dnxcore50,项目应该会失败.如果是这样的话,我们如何推动Kestrel使用它?
正如旁注,项目运行良好,没有任何错误,但当我尝试使用DNU手动构建项目时,我得到以下错误.我认为此时并不重要,因为据我所知,它在运行时不会导致故障.只是想添加它以防万一.
我在更新到beta5时遵循了本指南,并且更新过程似乎有效.
http://blogs.msdn.com/b/webdev/archive/2015/06/30/asp-net-5-beta5-now-available.aspx
要更新到ASP.NET 5 Beta5,请使用以下步骤:
- 如果您还没有安装.NET版本管理器(DNVM)(它预装了Visual Studio 2015 RC,或者您可以获得最新版本)
- 从命令提示符处将DNX_FEED环境变量设置为https://www.nuget.org/api/v2
- 运行"dnvm upgrade"在您的应用程序中更新您的global.json以指向beta5版本的.NET执行环境(DNX)
- 你的project.json也指向beta5包版本
- 运行"dnu restore"运行"dnu build"并将代码迁移到需要的beta5
但是我遇到构建错误,说我丢失了程序集.它抱怨System.Void,这样就丢失了.它也找不到来自Microsoft.AspNet.MVC的Controller:/
如果我恢复到beta4然后再次工作.
我错过了什么步骤?
DNVM列表(这将恢复为beta4)
Active Version Runtime Architecture Location Ali
as
------ ------- ------- ------------ -------- ---
1.0.0-beta4 clr x64 C:\Users\MySelf\.dnx\runtimes
* 1.0.0-beta4 clr x86 C:\Users\MySelf\.dnx\runtimes
1.0.0-beta4 coreclr x64 C:\Users\MySelf\.dnx\runtimes
1.0.0-beta4 coreclr x86 C:\Users\MySelf\.dnx\runtimes
1.0.0-beta5 clr x86 C:\Users\Myself\.dnx\runtimes def
1.0.0-beta5-12103 clr x86 C:\Users\MySelf\.dnx\runtimes
Run Code Online (Sandbox Code Playgroud) 在.net 4.5中,我能够将资源文件添加到我的项目中,将图像作为位图添加到此资源文件中,并通过Properties.Resources.ImageName访问它们.我如何在4.6 dnx中编译图像?
提前致谢!
我正在尝试创建一个共享库项目,其中包含一些用于在多个客户端(WPF/SL5/Asp.Net)之间序列化数据的POCO类.
在Asp.Net vNext之前,我正在使用PCL而没有任何问题.现在MVC 6在那里,我试图将Asp.Net Core 5目标添加到PCL,但似乎不可能:
我猜相应的PCL配置文件还不存在,所以我尝试创建一个"类库包"并添加SL5目标
"frameworks": {
"dotnet": { },
"dnx46": { },
"dnxcore50": { },
"sl5": { }
}
Run Code Online (Sandbox Code Playgroud)
但遗憾的是,即使目标被添加到参考树而没有任何错误,它在编译时也会失败:
有错误,如:
Error CS0518 : Predefined type 'System.Object' is not defined or imported
Error CS0246 : The type or namespace name 'String' could not be found (are you missing a using directive or an assembly reference?)
Run Code Online (Sandbox Code Playgroud)
就像'slor'目标不存在'Micorosft.CSharp'...我不能将'mscorlib'添加到"sl5"依赖项中,甚至添加BCL也没有帮助.我迷路了.
我错过了什么?
有谁知道是否可以使用无头浏览器来测试针对dnxcore50的ASP.net 5应用程序的UI?现在我可以构建一个可以在Windows,Mac和Linux上开发和运行的应用程序.但是,您无法运行UI测试,因为它们需要像Selenium这样的浏览器自动化解决方案.
我正在使用1.0.0-beta7 x64,但视觉工作室坚持认为我使用的是x86.当我删除所有我的运行时,除了我定位的那个,我得到这个:
我在项目的任何地方都找不到对x86的引用.
当我将鼠标悬停在解决方案DNX SDK版本上时,它会显示x86版本,但我不知道它是从哪里获得的.目前这不会导致任何问题,我只是想了解发生了什么.
文档不清楚,似乎它允许包装dll和csproj用于Asp.Net Core 5应用程序.它是否允许您在.Net Core 5网站中使用针对.Net Framework 4.6构建的类库?
新的aspnet具有内置的依赖项注入:启动类实例接收服务,控制器,查看组件。我有什么方法可以创建类的对象并使用aspnet功能传递服务吗?就像是:
WebApplicationClassesActivator.Create(typeof(MyClass))
Run Code Online (Sandbox Code Playgroud)
例如,其中MyClass包含构造函数接收IHostingEnvironment实例。
实际用法:
public class MyController : Controller
{
private readonly IContext Context;
public MyController(IContext context)
{
Context = context;
}
public IActionResult Index(string className)
{
return View(WebApplicationClassesActivator.Create(Type.GetType(className)));
}
}
Run Code Online (Sandbox Code Playgroud)
classsName类名在哪里:
public class A
{
public A(IContext context, IHostingEnvironment env)
{
...
}
}
Run Code Online (Sandbox Code Playgroud) 如果不可能,这可能是一个简单的否,所以首先我会直接问,是否可以立即使用Microsoft.AspNet.SignalR.Client和dnxcore50?
如果应该可以,我正在点击的错误的详细信息如下,这是一个vNext控制台应用程序:
在添加对Microsoft.AspNet.SignalR.Client 2.2.0版的依赖后,代码正确编译为dnx451,但是对于dnxcore50,我收到的错误似乎无法弄清楚:
var hubConnection = new HubConnection("http://localhost");
IHubProxy hubProxy = hubConnection.CreateHubProxy("MyHubName");
Run Code Online (Sandbox Code Playgroud)
Visual Studio使用以下错误强调CreateHubProxy()方法:
"Object"类型在未引用的程序集中定义.您必须添加对程序集'mscorlib,Version = 2.0.5.0,Culture = neutral,PublicKeyToken = 7cec85d7bea7798e,Retargetable = Yes'的引用
显然,因为我想使用dnxcore50,我不能只添加对mscorlib的引用.我正在试图弄清楚系统中是否存在我应该在这里引用的东西,或者这个包是否不兼容.